0
点赞
收藏
分享

微信扫一扫

c++ 关键字 explicit

青青子衿谈育儿 2022-03-12 阅读 59

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 条评论