- 编译器自动生成了哪些函数
编译器自动创建了default构造函数,copy构造函数,copy assignment操作符和构造函数。
例如你写下一个函数 class Empty{ };
class Empty {
public:
Empty(){….}
Empty(const Empty& rhs) {…….}
~Empty() {……}
Empty& operator=(const Empty& rhs){……}
}; - 不想编译器自动生成的函数,用private声明
将成员函数声明为private而且不实现它,就可以阻止编译器自动创建而且阻止别人调用它。例如
class Uncopyable{
protected:
Uncopyable(){}
~Uncopyable(){}
private:
Uncopyable(const Uncopyable&)
Uncopyable& operator={const Uncopyable&);
}