c++ explicit 关键字

在我们的c++中,有些东西是默认支持的,比如隐士转换和默认的拷贝构造函数(浅层拷贝).

介绍下隐式转化:

class Age {
public:
    Age(int a){
        cout << "My age is :" << a <<  endl;
    }
};

在main函数中,我们可以这么写:

 //隐藏转换
    Age a1(10);
    Age a2 = 12; //等价于 Age a2(12);

注意隐式转化仅仅适用于构造函数为单个参数的情况下。

如果我们要禁止隐式转化,那么我们就可以使用关键字:explicit来帮助我们了.

class Age {
public:
    explicit Age(int a){
        cout << "My age is :" << a <<  endl;
    }
};

添加关键字explicit后

Age a1(10); //合法
Age a2 = 12; //不合法,不再支持隐式转换,编译期间不会通过

猜你喜欢

转载自blog.csdn.net/zhangkai19890929/article/details/82557967