关于复制构造函数

#define DISALLOW_EVIL_CONSTRUCTORS(TypeName)     
TypeName(const TypeName&);         
 void operator=(const TypeName&)

 

 

 

class ScriptExtensionRegister {

 

public:

 

//

 

private:

 

//

 

 DISALLOW_EVIL_CONSTRUCTORS(ScriptExtensionRegister);

 

 

};


如果我们实在不想编写拷贝构造函数和赋值函数,又不允许别人使用编译器生成的缺省函数,怎么办?偷懒的办法是:只需将拷贝构造函数和赋值函数声明为私有函数,不用编写代码。

例如:class A{ …private:A(const A &a); // 私有的拷贝构造函数A & operate =(const A &a); // 私有的赋值函数};如果有人试图编写如下程序:A b(a); // 调用了私有的拷贝构造函数b = a; // 调用了私有的赋值函数编译器将指出错误,因为外界不可以操作A 的私有函数。

 

当进行一个类的实例初始化的时候,也就是构造的时候,调用的是构造函数(如是用其他实例来初始化,则调用拷贝构造函数),非初始化的时候对这个实例进行赋值调用的是赋值运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值