在你编写类时,C++会为你默认构造出如下函数:
1.默认的构造函数
2.析构函数3.拷贝构造函数
4.拷贝操作符
注意:当类中含有某个变量的引用,或者有const成员函数时,此时将不能执行拷贝操作符。
同时如果在基类中将拷贝操作符定义为private,则编译器将拒绝为其派生类在生成拷贝操作符。
若不想使用编译器自动生成的函数,就应该明确拒绝。比如你不想使用其自动生成的拷贝构造函数,你可以:
1.重新定义自动生成的函数,并将其声明为Private,并且只写声明,不定义函数。防止内部成员函数或友元函数调用。
2.或者直接定义一个无法拷贝的基类
class UnCopyable
{
protected:
UnCopyable();
~UnCopyable();
private:
Uncopyable(const Uncopyable&); //阻止拷贝 ---注意重写拷贝构造函数必须是传递引用
Uncopyable& operator = (const Uncopyable&);
}