C++ explicit构造函数实例解析
简介
C++中的explicit关键字用于修饰构造函数,它告诉编译器该构造函数不应用于隐式转换。也就是说,当使用该构造函数进行类型转换时,必须显式地调用,否则编译器会报错。
语法
通常情况下,explicit是写在构造函数的前面,如下所示:
explicit MyClass(int x);
示例
示例一
class A {
public:
explicit A(int a);
};
int main() {
// 隐式调用A(int a)
A obj1 = 10;
// 显式调用A(int a)
A obj2(10);
return 0;
}
在上面的示例中,因为explicit使得A(int a)不能进行隐式调用,所以第一行会编译报错。
示例二
class B {
public:
B(int a);
};
void test(B obj) {
return;
}
int main() {
// 隐式调用B(int a)
test(10);
// 显式调用B(int a)
B obj(10);
test(obj);
return 0;
}
在上面的示例中,因为test函数的参数是B类型,所以当传入10时,编译器会调用B(int a)进行类型转换。由于B(int a)没有用explicit修饰,因此可以正常编译和运行。
总结
- explicit关键字用于修饰构造函数。
- 使用explicit关键字可以防止构造函数进行隐式转换。
- 当使用该构造函数进行类型转换时,必须显式地调用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ explicit构造函数实例解析 - Python技术站