explicit

C++用户定义对象之间可以禁止隐式转换。

voiddosomething(A aObject); 

class A { 

public: 

explicit A(int x = 0); 

dosomething(20); // ERROR 隐式转换被禁止

dosomething(static_cast<A>(20)); // OK 显式转换

被声明为explicit 的构造函数通常比non-explicit更好。

综合起来说

C++ 中应该尽量不使用转换,尽量使用显式转换来代替隐式转换,尽量不用reinterper_cast显式转换。

 

posted @ 2017-12-24 22:40  明年今日卟  阅读(454)  评论(0编辑  收藏  举报