3.5.5 定义拷贝构造函数(2)
这个拷贝构造函数将d1的数据成员拷贝到d2(见图3-3)。
|
| 图3-3 编译器提供的拷贝构造函数将d1的数据成员拷贝到d2的数据成员 |
|
将字符串Great Dane拷贝到d2.p指向的存储区域的第二块位置(见图3-4)。
语句
|
|
| 图3-4 将Great Dane拷贝到d2.p指向的存储区域的第二块位置后,d1与d2的内存映像 |
|
来获得一个新的对象d2,d2拥有自己的存储空间,来保存这些字符串,而不是与d1共享存储空间。结果编译器却生成了一个拷贝构造函数,将d1.p直接赋给d2.p,将d1.size直接赋给d2.size,使得d1和d2的指针指向了同一个存储区域。
程序清单3-6列举了因使用编译器生成的拷贝构造函数而导致的严重后果。
例3-27
程序清单3-7改正了程序清单3-6的错误,具体方法是为Namelist类提供一个满足要求的拷贝构造函数。
程序清单3-7 为类设计合适的拷贝构造函数
|







