class B (
public:
explicit B(int x = 0, bool b = true);
};
class C {
public:
explicit C (int x);
};
上述的classes B 和C 的构造函数都被声明为explic址,这可阻止它们被用来执行隐式类型转换(implicit type conversions) ,但它们仍可被用来进行显式类型转
换(explicittype conversions) :
void doSomething(B bObject); //函数,接受→个类型为B 的对象
B bObjl;
doSomething(bObjl); //没问题,传递一个B 给doSomething函数
B bObj2(28); //没问题,根据int28 建立一个B, (函数的bool的 参数缺省为true)
doSomething(28); //错误! DoSomething 应该接受一个B ,不是一个int,而int 至B 之间并没有隐式转换。
doSomething(B(28)); //没问题,使用B 构造函数将int 显式转换
982

被折叠的 条评论
为什么被折叠?



