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

 

posted @ 2020-12-07 20:17  wolbo  阅读(354)  评论(0)    收藏  举报