/***
explicit.cpp
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。
**/
#include<iostream>
using namespace std;
class A
{
private:
int a;
public:
A()
{
a=0;
cout<<"constructor A ( )"<<a<<endl;
}
A(int aa)
{
a=aa;
cout<<"constructor A ( int a)"<<a<<endl;
}
~A()
{
cout<<"deconstructor ~A()"<<endl;
}
};
class B
{
private:
int b;
public:
explicit B(int bb)
{
b=bb;
cout<<"construcor A(int b)"<<b<<endl;
}
};
A play(A a)
{
return a;
}
int main()
{
A a1=12;
// B b1=11; //error
A a2=play(10);
return 0;
}
/***** result ******/
/*
constructor A ( int a)12
constructor A ( int a)10
deconstructor ~A()
deconstructor ~A()
deconstructor ~A()
*/
explicit
最新推荐文章于 2014-06-07 13:13:11 发布