C++的转换构造函数可以将构造函数参数类型隐式地转换为类类型。可以使用explicit关键字来禁止这种默认的类型转换。
1 explicit关键字
用explicit关键字修饰转换构造函数,MyClass类的代码如下所示
class MyClass
{
public:
int m_i;
public:
explicit MyClass(int i)
{
m_i = i;
}
};
此时,MyClass类的转换构造函数被定义为explicit。再调用《C++中的转换构造函数2-1》中提到的compareMyClass()函数时
compareMyClass(1);
编译器会报错,报错的信息是“error C2664: “bool compareMyClass(const MyClass &)”: 无法将参数 1 从“int”转换为“const MyClass &””。
订阅专栏 解锁全文
305

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



