// explicit 关键字(禁止隐式转换)
#include <iostream>

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;
}
