explicit是C++中的一个关键字,只用于修饰只有一个参数的构造函数:
class A{
explicit A(const T obj);
};
该关键字告诉编译器该类只能显式的转换,不能隐式(implicit)的赋值。下面介绍一下显式转换和隐式转换的区别:
A a=b;//隐式的调用构造函数
A a(b);//显式的调用构造函数
google的c++规范中提到explicit的优点是可以避免不合时宜的类型变换,缺点无。所以以后想项目中我决定只有单个传参的构造函数都用explicit修饰,以避免不必要的麻烦。