C++ Primer plus 第12章类和动态内存分配复习题参考答案
- 假设String类有如下私有成员
class String
{
private:char* str; //points to string allocated by newint len; //holds length of string//...
};
a.下述默认构造函数有什么问题?
String::String(){}
没有为str和len指定默认值,比较将str设置为nullptr。
b.下述构造函数有什么问题?
String::String(const char* s)
{str = s;len = strlen(s)
}
str指向s,可能存在二次释放的问题;len 应该为strlen(s) + 1.
c.下述构造有无问题
String::String(const char* s)
{strcpy(str, s);len = strlen(s);
}
没有为str分配内存,应使用new char[strlen(s) + 1]来分配。
2.如果定义了一个类,其指针成员使用new进行初始化,请指出可能出现的3个问题以及如何避免。
- 析构函数里没有将指针成员释放
- 复制和赋值时,直接使用浅复制,导致内存二次释放
- 构造函数和析构函数中new和delete不对应。
C++ Primer plus 第12章类和动态内存分配复习题参考答案相关推荐
- 第12章类和动态内存分配
第12章类和动态内存分配 (1) class student {char name[40];//并不是每一个字符串都是40//如果是一个对象数组,则浪费空间 }; 12.1 (1)静态成员在类声明中声 ...
- C++ Primer Plus(第六版)第12章 类和动态内存分配
严重性代码说明项目文件行禁止显示状态 错误 C4996 'strcpy': This function or variable may be unsafe. Consider using ...
- 第十二章 类和动态内存分配
静态成员变量 不能在类声明中初始化静态成员变量(声明描述了如何分配内存,但并不分配内存): 可以在类声明之外(在方法文件中)用单独的语句初始化静态成员变量: 初始化语句必须指出类型,并使用作用域解析运 ...
- 《C++ Primer Plus》读书笔记之十—类和动态内存分配
第12章 类和动态内存分配 1.不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存.可以在类声明之外使用单独的语句进行初始化,这是因为静态类成员是单独存储的,而不是对象的 ...
- C++ Primer Plus学习(十一)——类和动态内存分配
类和动态内存分配 动态内存和类 静态类成员 特殊成员函数 string类的改进 构造函数中的new 返回对象 指向对象的指针 成员初始化列表(member initializer list) 动态内存 ...
- C++类与动态内存分配
11.10 类与动态内存分配 通常,最好是在程序运行时(而不是编译时)确定诸如使用多少内存等问题.对于在对象中存储姓名来说,通常的C++方法是,在类构造函数中使用new运算符在程序运行时分配所需的内存 ...
- 第12章-cpp类和动态内存分配
本章内容包括: • 对类成员使用动态内存分配. • 隐式和显式复制构造函数. • 隐式和显式重载赋值运算符. • 在构造函数中使用new所必须完成的工作. • 使用静态类成员. • 将定位new运算符 ...
- 读书笔记||类和动态内存分配
一.动态内存和类 C++在分配内存的时候是让程序是在运行时决定内存分配,而不是在编译时再决定.C++使用new和delete运算符来动态控制内存.但是在类中使用这些运算符将导致许多新的编程问题,在这种 ...
- 类和动态内存分配——C++ Prime Plus CH12
①动态内存和类 1.复习示例和静态类成员 使用程序复习new和delete用法. // badstring.h文件 #include<iostream> #ifndef STRING_BA ...
最新文章
- 关于Unity中自带摇杆与车轮碰撞器的使用
- 每日一皮:你们都是怎么解压的?
- ElasticSearch中distinct,count和group by的实现
- Java 获取linux根目录下的文件夹_Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
- django-登陆案例-分析篇1909
- Zabbix 系统监控(三)VMware 虚拟平台监控、邮件告警、企业微信告警配置
- python接口自动化测试(五)-其它(认证代理超时配置)
- 《居里夫人自传》读后感
- 实时视频带宽的计算过程
- Xcode打包cocos2dx项目启动页突然黑屏
- 进程的概念与基本介绍
- USB(一)——USB通用串行总线基础知识详述
- python如何撤销_python如何查看微信消息撤回
- Mysql常见面试题(进阶知识点)
- 服务搭建篇(七) Elasticsearch单节点部署以及多节点集群部署
- 【精髓】Laravel 模型关联
- MATLAB基础学习(二)-变量类型与赋值
- 线性代数的一些知识点
- Visual Studio 2005 下载地址 V8各种版本官方下载网址
- Android平台GB28181接入模块技术接入说明
热门文章
- CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。
- C语言中()和【】的区别?
- java:volatile,instanceof,strictfp关键字
- python六十四: 迭代器协议
- Greenplum添加mirror步骤
- Leetcode_198_House Robber
- apache起步命令加-k参数和不加的区别
- netty4.0.x源码分析—bootstrap
- 导入android studio项目,编译失败
- 10款WordPress的插件让你的网站的移动体验