explicit 在类的申明中使用,防止构造函数隐式转化。
class CTest1 { private : int m_n; public: CTest1(int n):m_n(n){} ~CTest1(void); }; class CTest2 { int m_n; public: explicit CTest2(int m):m_n(m){} ~CTest2(){} private: };
CTest1 t1=2; CTest2 t2(2); CTest2 t3=2;
导致的结果是: CTest2 t3=2; Error :不存在从“int” 类型转化为CTest2的适当构造函数。