c++ 关键字 explicit

C++11之前只可以用与防止单个参数(泛指,因为多个参数在使用默认实参时也可以认为是单个参数) ,使用于构造函数 防止其进行隐式转换

class Myclass {
public:
	explicit
	Myclass(int r, int im = 0) :m_r(r),m_im(im)
	{}
	void print() {
		cout << "m_r = " << m_r << ";m_im = " << m_im << endl;
	}
	Myclass operator +(const Myclass& rhs) {
		return Myclass((this->m_r + rhs.m_r), (this->m_im + rhs.m_im));
	}
private:
	double m_r, m_im;
};
int main()
{
	Myclass c1(2, 3);
	Myclass c3 = c1 + 4; //Error 由于使用了explicit关键字 此处不会再被隐式转换一个对象 
    //去掉关键字后可以正常编译运行
	c3.print();
	return 0;

}

c++11后 可以用与多个参数的构造函数,此处暂时不再举例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值