目录

一、隐式转换

二、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

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐