c++语法—————隐式转换+explicit关键字
加在构造函数的前面进行修饰,有了它就不会发生上面的这一系列事儿了,它会。而言,这里并不是将值直接赋值给到左边的对象,而是在。把它里面的值初始化为 1,然后再通过这个。,这就是编译器会做的一件事。,这个临时变量的类型是。
·
目录
【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;
}
};
更多推荐
已为社区贡献10条内容
所有评论(0)