编译器自动生成的函数
一般而言,编译器会为每一个类声明一个default构造函数、copy构造函数、copy assignment操作符和析构函数,这些函数都是public且inline的
唯有这些函数被需要(被调用)时,他们才会被编译器创建出来
如果打算在一个内含reference成员或const成员的class内支持赋值操作,你必须定义自己的copy assignment操作符。如果某个base class将copy assignment操作符
声明为private,编译器将拒绝为其derived class生成一个copy assignment操作符。
不能复制的类
将copy constructor或copy assignment声明为private,这个做法并不绝对安全,因为member函数和friend函数还是可以调用private函数。将成员函数声明为private
但故意不去实现它们,使得不慎调用操作会产生一个连接错误(linkage error)
将连接期错误移至编译器是可能的