一 explicit 的作用
explicit的作用其实很容易理解,就是不能隐式调用构造函数,只能显示构造,具体看下面例如即可。
class Test1 {
public:
Test1(int a) {
_a = a;
}
private:
int _a;
};
class Test2 {
public:
explicit Test2(int a) {
_a = a;
}
private:
int _a;
};
void test00() {
Test1 t1 = 2; // 可以隐式调用构造
//Test2 t2 = 5; // error, 不能隐式调用构造函数.只能像下面调用显示构造或者通过显示构造去赋值
Test2 t2(5);
Test2 t22 = Test2(5);
}
不注释的话,编译器会报错。