class CTest1 {
public:
CTest1(int n)
{
cout<<"Constructor of CTest1"<<endl;
}
CTest1(const CTest1&)
{
cout<<"Copy constructor of CTest1"<<endl;
}
};
class CTest2 {
public:
explicit CTest2(int n)
{
cout<<"Constructor of CTest2"<<endl;
}
explicit CTest2(const CTest2&)
{
cout<<"Copy constructor of CTest2"<<endl;
}
};
int main()
{
CTest1 a1(1); //显示调用构造函数
CTest1 b1 = 1; //隐式调用构造函数
CTest1 c1 = a1; //隐式调用拷贝构造函数
CTest1 d1(b1); //显示调用拷贝构造函数
CTest2 a2(2); //显示调用构造函数
CTest2 b2 = 2; //隐式调用构造函数,编译错误
CTest2 c2 = a2; //隐式调用拷贝构造函数,编译错误
CTest2 d2(b2); //显示调用拷贝构造函数
return 0;
}
C++ explicit关键字
最新推荐文章于 2022-08-25 14:55:44 发布