博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ Primer plus 第12章类和动态内存分配复习题参考答案
阅读量:5982 次
发布时间:2019-06-20

本文共 562 字,大约阅读时间需要 1 分钟。

  1. 假设String类有如下私有成员
class String{private:    char* str; //points to string allocated by new    int 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不对应。

转载地址:http://jmrox.baihongyu.com/

你可能感兴趣的文章
php 导出excel
查看>>
tomcat Digester Rule
查看>>
Oracle显示正在执行的sql
查看>>
24th Data Sizes
查看>>
产生Fibonacci数列
查看>>
Bootstrap 3学习笔记
查看>>
Oracle基础知识-oracle常用命令
查看>>
d语言之异常
查看>>
网页版几何画板开发笔记(三)
查看>>
Oracle SQL的优化规则解析
查看>>
View 的生命周期
查看>>
解析android support lib是怎么回事
查看>>
shell来start、stop、restart应用程序模板
查看>>
球面坐标的面积计算
查看>>
DOS中adb的使用
查看>>
Declare&bind queue dynamically with RabbitMQ
查看>>
svn的问题集
查看>>
Windows环境下, 通过 npm install -g 安装的全局模块, 可能无法在app中被r
查看>>
hyperledger fabric1.0部署实操 二
查看>>
20140321学习计划
查看>>