文件名称:复制构造函数-嵌入式实时操作系统uc/os-ii
文件大小:6.14MB
文件格式:PDF
更新时间:2024-07-13 19:10:35
C++
9.5 复制构造函数
第 7 章介绍过,对于程序清单 7.1 中的函数 Area( ),传递的实参被复制:
double Area(double radius);
因此,调用 Area( )时,实参被复制给形参 radius。这种规则也适用于对象(类的实例)。
9.5.1 浅复制及其存在的问题
程序清单 9.7 所示的 MyString 类包含一个指针成员 buffer,它指向动态分配的内存(这些内存是
在构造函数中使用 new 分配的,并在析构函数中使用 delete[]进行释放)。复制这个类的对象时,将复
制其指针成员,但不复制指针指向的缓冲区,其结果是两个对象指向同一块动态分配的内存。销毁其
中一个对象时,delete[]释放这个内存块,导致另一个对象存储的指针拷贝无效。这种复制被称为浅复
制,会威胁程序的稳定性,如程序清单 9.8 所示。
程序清单 9.8 按值传递类(如 MyString)的对象带来的问题
0: #include