explicit关键字
2020-10-18 本文已影响0人
不学不知道
含义
- explicit 清楚地
- implicit 隐藏的
- 用来修饰类的构造函数,添加explicit 修饰符后将阻止类构造函数的隐式自动转换
- 默认是implicit, 可以进行隐式类型转换。
- explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了
作用
- 阻止单参数的构造函数的隐式类型转换
#include <iostream>
using namespace std;
// explicit函数的介绍!!!
// explicit函数的作用:explicit构造函数是用来防止隐式转换的
class Test1{
public:
Test1(int n){ // 普通隐式的构造函数
num = n;
}
private:
int num;
};
class Test2{
public:
explicit Test2(int n){ //explicit(显式)构造函数
num = n;
}
private:
int num;
};
int main(){
Test1 t1 = 12; // 隐式调用其构造函数,成功
Test2 t2 = 12; // 编译错误,不能隐式调用其构造函数
Test2 t3(12); // 显式调用成功
return 0;
}