文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>显式禁用不需要的隐式生成函数

显式禁用不需要的隐式生成函数

时间:2010-09-20  来源:zyd_cu

对于构造函数,拷贝构造函数,赋值运算符等,如果类没有显示声明,则系统会为类生成默认的版本,如果类不想使用隐式生成的默认版本,则应该显示的禁用。如下例,对于NoAssign类,我们不想对其使用赋值运算符(如它是一个数组类型,而默认数组类型是不支持赋值的),那么我们就应该在类中显示的禁用赋值运算符。

#include <iostream>
using namespace std;

class NoAssign {
private:
    NoAssign& operator=(const NoAssign& na);
};


将赋值运算函数定义为private,即可防止其被调用,但类的成员函数和友元还是能够访问,故仍然是不安全的。可以通过一种巧妙的方式,即声明operator=,但不对其进行实现。这样,当用户试图对NoAssign进行赋值时,编译器会报错;当类的成员或友元,访问operator=时,连接器会报错。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载