explicit
英 [ ɪkˈsplɪsɪt ]美 [ ɪkˈsplɪsɪt ]
adj. 明确的,清楚的;直言的;详述的;不隐瞒的;
在C++中,声明为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=12;//隐式调用其构造函数,成功
Test2 t2=12;//编译错误,不能隐式调用其构造函数
Test2 t2(12);//显式调用成功
return 0;
}
Test1的构造函数带一个int型的参数,代码23行会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此代码24行会出现编译错误。
普通构造函数能够被隐式调用。而explicit构造函数只能被显式调用。
本文详细介绍了C++中explicit关键字的作用及用法。当一个构造函数被声明为explicit时,该构造函数不能用于隐式类型转换。文章通过具体示例对比了普通构造函数与explicit构造函数在调用方式上的区别。
1008

被折叠的 条评论
为什么被折叠?



