c++指针成员与非指针成员
指针成员:
好处:
1 类占内存较小
2 可以不包含头文件,使用前置声明
3 可以不指定具体实现,使用父类指针
坏处:
手动管理内存,需要指定拷贝构造,赋值构造,析构函数
非指针成员:
好处:
1 不需要管内存
坏处
1 不能使用前置声明
2 类实例占内存大
3 只能明确实现
4 需要在构造方法里调用成员变量的构造函数
三法则
有时您需要实现一个管理资源的类。(永远不要在一个类中管理多个资源,这只会导致痛苦。)在这种情况下,请记住以下三个规则:
如果你需要明确声明析构 拷贝构造 赋值构造函数.那么你可能需要明确声明这三个
五法则
c++11 增加了移动构造函数和移动赋值构造函数与以上同理
class C {
C(const C&) = default; // Copy constructor
C(C&&) = default; // Move constructor
C& operator=(const C&) = default; // Copy assignment operator
C& operator=(C&&) = default; // Move assignment operator
virtual ~C() { } // Destructor
};
结论:
一般不需要自己管理资源
不使用指针成员,就不会用到这些法则
ref:
https://stackoverflow.com/questions/8589739/pointer-vs-non-pointer-members-of-a-class
https://stackoverflow.com/questions/4172722/what-is-the-rule-of-three

浙公网安备 33010602011771号