答案:C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。
explicit是c++的关键字,意为必须明确的调用构造函数。
比如:
struct b {
b(int) {}
};
b b = 10;//此时是合法的,自动隐式调用b::b(int)构造
如果不希望这样,必须明确调用构造函数的话,用explicit关键字。
如:
struct b {
explicit b(int) {}
};
b b = 10; //不合法,编译不通过,不能隐式调用构造函数。
b b = b(10);//合法,必须明确调用了构造函数
上一个:c++程序,200行左右
下一个:Microsoft Visual C++ Debug Library 界面出现问题