在 C++ 中使用三原则
三原则是在使用 C++ 时的一个经验法则。这是一条善意的做法规则,即如果你的类需要以下任何一个:
- 复制构造函数,
- 赋值运算符,
- 或析构函数,
显式定义,则很可能需要所有三个。
这是为什么?这是因为,如果你的类需要上述任何一个,则它正在管理动态分配的资源,并且可能需要其他资源才能成功实现这一目的。例如,如果你需要一个赋值运算符,你将创建当前通过引用复制的对象的副本,从而分配资源。你将需要复制构造函数来复制和析构函数来释放这些资源。
1. 复制构造函数 - 编译器提供的复制构造函数对 Foo Manager 的所有属性进行逐一复制。这和赋值运算符带来的问题是一样的。
2. 赋值运算符 - 如果你不提供一个,编译器将创建一个默认的赋值运算符。默认赋值运算是一个逐一复制函数,进行浅拷贝而非深拷贝。这可能会导致内存泄漏、错误赋值等问题。
3. 析构函数 - 当这个管理器超出范围时,它应该释放它管理的所有资源。
广告