有时通过构造函数自动转换类型可能出现问题
为了避开构造函数自动在前面加关键字explicit 只能用于构造函数 对Two的
构造函数进行修改
//: C12:ExplicitKeyword.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Using the "explicit" keyword
class One {
public:
One() {}
};
class Two {
public:
explicit Two(const One&) {}
};
void f(Two) {}
int main() {
One one;
//! f(one); // No auto conversion allowed
f(Two(one)); // OK -- user performs conversion
} ///:~
通过使类Two的构造函数显式化,编译器被告知不能使用那个构造函数执行任何
自动转换