在 C++ 中使用三原则


三原则是在使用 C++ 时的一个经验法则。这是一条善意的做法规则,即如果你的类需要以下任何一个:

  • 复制构造函数,
  • 赋值运算符,
  • 或析构函数,

显式定义,则很可能需要所有三个。

这是为什么?这是因为,如果你的类需要上述任何一个,则它正在管理动态分配的资源,并且可能需要其他资源才能成功实现这一目的。例如,如果你需要一个赋值运算符,你将创建当前通过引用复制的对象的副本,从而分配资源。你将需要复制构造函数来复制和析构函数来释放这些资源。

1. 复制构造函数 - 编译器提供的复制构造函数对 Foo Manager 的所有属性进行逐一复制。这和赋值运算符带来的问题是一样的。

2. 赋值运算符 - 如果你不提供一个,编译器将创建一个默认的赋值运算符。默认赋值运算是一个逐一复制函数,进行浅拷贝而非深拷贝。这可能会导致内存泄漏、错误赋值等问题。

3. 析构函数 - 当这个管理器超出范围时,它应该释放它管理的所有资源。

更新于: 2019 年 7 月 30 日

239 次浏览

启动你的 职业生涯

完成课程获得认证

开始了
广告