6
5的规则-是否使用?
的3中的规则(5规则状态在新的C ++标准): 如果您需要自己显式声明析构函数,复制构造函数或复制赋值运算符,则可能需要显式声明这三个函数。 但是,另一方面,马丁的“ 清理代码 ”建议删除所有空的构造函数和析构函数(第293页,G12:Clutter): 没有实现的默认构造函数有什么用?它要做的只是用毫无意义的工件使代码混乱。 那么,如何处理这两种相反的意见呢?是否应该真正实现空的构造函数/析构函数? 下一个示例准确地说明了我的意思: #include <iostream> #include <memory> struct A { A( const int value ) : v( new int( value ) ) {} ~A(){} A( const A & other ) : v( new int( *other.v ) ) {} A& operator=( const A & other …