1. 假设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章类和动态内存分配复习题参考答案相关推荐

  1. 第12章类和动态内存分配

    第12章类和动态内存分配 (1) class student {char name[40];//并不是每一个字符串都是40//如果是一个对象数组,则浪费空间 }; 12.1 (1)静态成员在类声明中声 ...

  2. C++ Primer Plus(第六版)第12章 类和动态内存分配

    严重性代码说明项目文件行禁止显示状态 错误    C4996    'strcpy': This function or variable may be unsafe. Consider using ...

  3. 第十二章 类和动态内存分配

    静态成员变量 不能在类声明中初始化静态成员变量(声明描述了如何分配内存,但并不分配内存): 可以在类声明之外(在方法文件中)用单独的语句初始化静态成员变量: 初始化语句必须指出类型,并使用作用域解析运 ...

  4. 《C++ Primer Plus》读书笔记之十—类和动态内存分配

    第12章 类和动态内存分配 1.不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存.可以在类声明之外使用单独的语句进行初始化,这是因为静态类成员是单独存储的,而不是对象的 ...

  5. C++ Primer Plus学习(十一)——类和动态内存分配

    类和动态内存分配 动态内存和类 静态类成员 特殊成员函数 string类的改进 构造函数中的new 返回对象 指向对象的指针 成员初始化列表(member initializer list) 动态内存 ...

  6. C++类与动态内存分配

    11.10 类与动态内存分配 通常,最好是在程序运行时(而不是编译时)确定诸如使用多少内存等问题.对于在对象中存储姓名来说,通常的C++方法是,在类构造函数中使用new运算符在程序运行时分配所需的内存 ...

  7. 第12章-cpp类和动态内存分配

    本章内容包括: • 对类成员使用动态内存分配. • 隐式和显式复制构造函数. • 隐式和显式重载赋值运算符. • 在构造函数中使用new所必须完成的工作. • 使用静态类成员. • 将定位new运算符 ...

  8. 读书笔记||类和动态内存分配

    一.动态内存和类 C++在分配内存的时候是让程序是在运行时决定内存分配,而不是在编译时再决定.C++使用new和delete运算符来动态控制内存.但是在类中使用这些运算符将导致许多新的编程问题,在这种 ...

  9. 类和动态内存分配——C++ Prime Plus CH12

    ①动态内存和类 1.复习示例和静态类成员 使用程序复习new和delete用法. // badstring.h文件 #include<iostream> #ifndef STRING_BA ...

最新文章

  1. 关于Unity中自带摇杆与车轮碰撞器的使用
  2. 每日一皮:你们都是怎么解压的?
  3. ElasticSearch中distinct,count和group by的实现
  4. Java 获取linux根目录下的文件夹_Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
  5. django-登陆案例-分析篇1909
  6. Zabbix 系统监控(三)VMware 虚拟平台监控、邮件告警、企业微信告警配置
  7. python接口自动化测试(五)-其它(认证代理超时配置)
  8. 《居里夫人自传》读后感
  9. 实时视频带宽的计算过程
  10. Xcode打包cocos2dx项目启动页突然黑屏
  11. 进程的概念与基本介绍
  12. USB(一)——USB通用串行总线基础知识详述
  13. python如何撤销_python如何查看微信消息撤回
  14. Mysql常见面试题(进阶知识点)
  15. 服务搭建篇(七) Elasticsearch单节点部署以及多节点集群部署
  16. 【精髓】Laravel 模型关联
  17. MATLAB基础学习(二)-变量类型与赋值
  18. 线性代数的一些知识点
  19. Visual Studio 2005 下载地址 V8各种版本官方下载网址
  20. Android平台GB28181接入模块技术接入说明

热门文章

  1. CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。
  2. C语言中()和【】的区别?
  3. java:volatile,instanceof,strictfp关键字
  4. python六十四: 迭代器协议
  5. Greenplum添加mirror步骤
  6. Leetcode_198_House Robber
  7. apache起步命令加-k参数和不加的区别
  8. netty4.0.x源码分析—bootstrap
  9. 导入android studio项目,编译失败
  10. 10款WordPress的插件让你的网站的移动体验