c++提供了关键字explicit,禁止通过构造函数进行的隐式转换。声明为explicit的构造函数不能在隐式转换中使用。
explicit关键字,防止隐式类型转换
MyString str3 = 10; //做什么用图? str2字符串为 "10" 字符串的长度10
//隐式类型转换 Mystring str3 = Mystring (10);
explicit关键字,防止隐式类型转换,有explict以后MyString str3 = 10;会报错
// 36.explicit关键字.cpp : 定义控制台应用程序的入口点。
//
#include<iostream>
using namespace std;
class MyString
{
public:
MyString(const char * str)
{
//
}
explicit MyString(int a)
{
mSize = a;
}
char* mStr;
int mSize;
};
void test01()
{
MyString str = "abc";
MyString str2(10);
cout << "mSize====" << str.mSize <<endl;
//MyString str3 = 10; //做什么用图? str2字符串为 "10" 字符串的长度10
//隐式类型转换 Mystring str3 = Mystring (10);没有explicit关键字的时候输出是10,调用了有参的构造函数
// explicit关键字 ,防止隐式类型转换
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}