- 1.implicit能帮助简化很多个人代码
- 2.explicit关键字必须显式的调用
#include <iostream>
class Entity
{
private:
std::string m_Name;
int m_Age;
public:
Entity(const std::string& name)
:m_Name(name), m_Age(-1){}
Entity(const int& age)
:m_Name("Veyron"), m_Age(age){}
//当加上了explicit关键字,就只能用main中的前一种显式方式(必须要写全类的名字)创建对象,无法使用后面那种implicit方法
explicit Entity(const std::string& name, const int& age)
:m_Name(name), m_Age(age) {}
};
void PrintEntity(const Entity& a) //这个函数要初始化传参到类对象中,那么赋值的参数要加const
{
//
}
int main()
{
//一般通过这种方式创建实例化对象
Entity a("given_Name");
Entity b(23);
//但是这么写也是可以的
Entity c = 22; //这个就叫隐式转换
PrintEntity(std::string("lwl"));//这种写法是可以的,下面的写法是不行的。因为由char到string,由string到类对象,有两次隐式转换
PrintEntity("lwl");//无法将参数 1 从“const char[4]”转换为“Entity & ”
Entity e = std::string("new_Name");
Entity d("lwl",23);
}