深入学习C++关键字:explicit

133 阅读1分钟
关键字:
    explicit   //强制按标准格式初始化一个对象
    
示例1class A {
    A(int) {}
    A(int, int) {}
    operator int() const { return 0; }
};
A a1 = 1;      //隐式转换为A a1 = A(1);
A a2(2, 2);    //标准形式
A a3 = {4, 5}; //隐式转换为A a3 = A(4, 5)
int i = a1;    //隐式转换

示例2class A {
    explicit A(int) {}
    explicit A(int, int) {}
    explicit operator int() const { return 0; }
};
//错误 A a1 = 1;
A a2(2, 2);    //标准形式
//错误 A a3 = {4, 5}; //隐式转换为A a3 = A(4, 5)
//错误 int i = a1;