读书人

请教一下是不是只要一个类里有指针成员

发布时间: 2012-02-08 19:52:21 作者: rapoo

请问一下是不是只要一个类里有指针成员,除了构造函数和析构函数外还必须定义拷贝构造函数和“=”运算符。
请问一下是不是只要一个类里有指针成员,除了构造函数和析构函数外还必须定义拷贝构造函数和“=”运算符。

[解决办法]
请问一下是不是只要一个类里有指针成员,除了构造函数和析构函数外还必须定义拷贝构造函数和“=”运算符。
答:一般情况下是这样的。但是如果你不想实现值语义,并且你很清楚你在做什么,也可以不按照effective上面的说法去做,但是一定要在程序里面加上注释以说明你的意图。
[解决办法]
指针复制,他指向的内存区域不会复制.当一个对象析构的时候(设计良好的类都这样),一般就释放成员指针指向的区域,那么
复制的指针不是要将一个内存区域释放若干次么?这是非法的.

一般定义拷贝函数,用来拷贝指针指向的区域或者一些判断符号,不要让析构将该区域释放了.


[解决办法]
一般来说是的,请参考 "effective c++ "
条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符

一般定义拷贝函数,用来拷贝指针指向的区域或者一些判断符号,不要让析构将该区域释放了.

这些只是一般的情况,如果需求不是这样的情况可以不用考虑的。
但绝大多数情况下都是这个样子的。

读书人网 >C++

热点推荐