explicit 关键字

c++ 提供了关键字 explicit ,禁止通过构造函数进行的隐式转换。声明为 explicit 的构造函数不能在隐式转换中使用。
[explicit 注意 ]
explicit 用于修饰构造函数 , 防止隐式转化。
是针对单参数的构造函数 ( 或者除了第一个参数外其余参数都有默认值的多参构造 ) 而言。
class MyString{
    public:
        explicit MyString(int n){
            cout << "MyString(int n)!" << endl;
        }
        MyString(const char* str){
            cout << "MyString(const char* str)" << endl;
        }
};
int main(){
    //给字符串赋值?还是初始化?
    //MyString str1 = 1;
    MyString str2(10);
    //寓意非常明确,给字符串赋值
    MyString str3 = "abcd";
    MyString str4("abcd");
    return EXIT_SUCCESS;
}

你可能感兴趣的:(c/c++,c++,开发语言)