#include <string>
#include <iostream>
//隐式转换: 未明确指定要做什么,联系上下文自动do something 编译器只允许一次隐式转化
//关键字explicit:禁用隐式转换,必须显示构造
class Entity
{
private:
std::string m_Name;//声明字符串
int m_Age;
public:
Entity(const std::string& name)
:m_Name(name),m_Age(-1){}
//禁用隐式构造,下方调用类型则需要手动转换
explicit Entity(int age)
:m_Name(),m_Age(age){}
};
void PrintEntity(const Entity& entity)
{
}
int main()
{
//隐式转换
//禁用后的age
PrintEntity(Entity(20));
//PrintEntity("Qingxiao");//“”是const char*类型,要变成Entity,中间还需要一步变成string,因此需要我们多做一步
PrintEntity(std::string("Qingxiao"));//或者PrintEntity(Entity("Qingxiao"))
Entity a("Qingxiao");
Entity b(20);
std::cin.get();
}