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后 可以用与多个参数的构造函数,此处暂时不再举例子