4.1在要求隐式转换的程序上下文中,我们可以通过将构造函数声明为explicit加以阻止。 关键字explicit只对一个实参的构造函数有效。需要多个实参的构造函数不能用于执行隐式转换,所以无需将这些构造函数指定为explicit。只能在类内声明构造函数时使用explicit关键字,在类外部定义时不应重复。explicit的构造函数只能用直接初始化,不能用拷贝初始化。

T test(something);//正确,直接初始化

T test=something;//错误,不能将explicit构造函数用于拷贝形式的初始化过程

05-15 01:18