// explicit 关键字(禁止隐式转换) #include using namespace std; class Person { private: int age; string name; public: Person(const char *name, int age = 18) { this->name = name; this->age = age; } // explicit 使得不存在从 "int" 转换到 "Person" 的适当构造函数 explicit Person(int age) // 进制 Person p = 值 { this->age = age; this->name = "disen"; } public: void show() { cout << name << ", " << age << endl; } }; int main() { Person p1 = "jack"; Person p2 = Person("doken", 9); Person p3 = Person(1); // Person p4 = 2; // 不存在从 "int" 转换到 "Person" 的适当构造函数 p1.show(); p2.show(); p3.show(); return 0; }