显式禁用不需要的隐式生成函数
时间:2010-09-20 来源:zyd_cu
对于构造函数,拷贝构造函数,赋值运算符等,如果类没有显示声明,则系统会为类生成默认的版本,如果类不想使用隐式生成的默认版本,则应该显示的禁用。如下例,对于NoAssign类,我们不想对其使用赋值运算符(如它是一个数组类型,而默认数组类型是不支持赋值的),那么我们就应该在类中显示的禁用赋值运算符。
#include <iostream> |
将赋值运算函数定义为private,即可防止其被调用,但类的成员函数和友元还是能够访问,故仍然是不安全的。可以通过一种巧妙的方式,即声明operator=,但不对其进行实现。这样,当用户试图对NoAssign进行赋值时,编译器会报错;当类的成员或友元,访问operator=时,连接器会报错。
相关阅读 更多 +