explicit关键字
SHOW_SMALL_FUNCTION_BLOCK_TIPS("explicit关键字")
{
//作用阻止编译器自动执行该函数
{
class explicitTest
{
public:
int a;
explicitTest() :a(NULL)
{}
explicitTest(int In_a) :a(In_a)
{}
explicitTest operator+ (const explicitTest& In)
{
return explicitTest(In.a);
}
private:
};
explicitTest t1;
explicitTest t2= t1 + 1;//正常运行,1被隐式转换为explicitTest
}
{
class explicitTest
{
public:
int a;
explicitTest() :a(NULL)
{}
explicit explicitTest(int In_a) :a(In_a)
{}
explicitTest operator+ (const explicitTest& In)
{
return explicitTest(In.a);
}
private:
};
explicitTest t1;
//explicitTest t2 = t1 + 1;//这里报错
}
}