C++——explicit

时间:2023-03-09 15:21:24
C++——explicit

explicit构造函数是用来防止隐式转换的。请看下面的代码:

class Test1
{
public:
Test1(int n)
{
num=n;
}//普通构造函数
private:
int num;
};
class Test2
{
public:
explicit Test2(int n)
{
num=n;
}//explicit(显式)构造函数
private:
int num;
};
int main()
{
Test1 t1=;//隐式调用其构造函数,成功
Test2 t2=;//编译错误,不能隐式调用其构造函数
Test2 t2();//显式调用成功
return ;
}

1.explicit构造函数只能直接初始化

2.可以使用static_cast强制转换

item.combine(static_cast<Sales_data>(cin));