目录

一、隐式转换

二、explicit 关键字 


【C++】explicit关键字详解(explicit关键字是什么? 为什么需要explicit关键字? 如何使用explicit 关键字)-CSDN博客

一、隐式转换

对于类型转换而言,这里并不是将值直接赋值给到左边的对象,而是在中间呢会产生一个临时变量,例如右边的这个 i 会先去构造一个临时变量,这个临时变量的类型是 [double] 。把它里面的值初始化为 1,然后再通过这个临时对象进行拷贝构造给d,这就是编译器会做的一件事

class Entity {
private:
	string name;
	int age;
public:
	Entity(int input_age) :
		name("ciallo"),age(input_age)
	{

	}

	Entity(const string input) :
		name(input),age(-1)
	{

	}

	//接口
	string Getname() {
		return name;
	}
	
};

int main() {
	
	Entity e = 22;

	cout << e.Getname() << endl;


	cin.get();
}

二、explicit 关键字 

加在构造函数的前面进行修饰,有了它就不会发生上面的这一系列事儿了,它会【禁止类型转换】

class Entity {
private:
	string name;
	int age;
public:
	explicit Entity(int input_age) :
		name("ciallo"),age(input_age)
	{

	}

	explicit Entity(const string input) :
		name(input),age(-1)
	{

	}

	//接口
	string Getname() {
		return name;
	}
	
};

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐