您的位置:首页 > 其它

如何不允许调用对象的拷贝构造函数和赋值运算符

2012-11-26 17:54 190 查看
C++中,如果不自定义对象的拷贝构造函数和赋值运算符,编译器会为该类添加默认的拷贝构造函数和赋值运算符,而且都是public。

但是,有时候我们不希望编译器管太多“闲事”,比如,我们定义一个类,不允许进行拷贝,不允许调用拷贝构造函数和赋值运算符,那该怎么办呢?

那么,我们就希望,如果调用的此类的拷贝构造函数或者赋值运算符,编译器能够报错。我们可以采用,把拷贝构造函数和赋值运算符声明为private。这样的话,只要类的成员函数和友元函数不调用他们,外部调用就会在编译期间侦测出错误。

但是,难保类的成员函数和友元函数不调用,因此,可以采用“将成员函数声明为private,而且故意不实现他们”,这样的话,如果调用了他们,编译器也会报错。

当然,如果定义一个基类,把拷贝构造函数和赋值运算符声明为私有,子类以private继承自基类,这样的实现方式会更好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐