当前位置: 代码迷 >> 综合 >> 40 implicit explicit
  详细解决方案

40 implicit explicit

热度:56   发布时间:2023-11-16 23:26:39.0
  • 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);
}

 

  相关解决方案