c++ explicit关键字的使用

C++中的explicit关键字只能用于修饰只有一个参数的类构造函数,它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字implicit ( 隐藏的 ) 相反,类构造函数默认情况下即声明为implicit(隐式)。

explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了。

结论:只有一个参数的构造函数要使用explicit声明,防止被隐式转换成类类型。

google的c++规范中提到explicit的优点是可以避免不合时宜的类型变换,缺点无。所以google约定所有单参数的构造函数都必须是显示的,只有极少数情况下拷贝构造函数可以不声明explicit。例如作为其他类的透明包装器的类。

你可能感兴趣的:(C++,c++)