explicit关键字
explicit关键字只能修饰只有一个参数的类的构造函数,它的作用是表明该构造函数是显式的,跟它相对应的另一个关键字是implicit,意思是隐式的,类的构造函数默认情况下声明为implicit。
#include <iostream>
#include <cstring>
using namespace std;
class CxString
{
public:
char* _pstr;
int _size;
public:
CxString(int size)
{
cout << "CxString(int size);" << endl;
_size = size;
_pstr = (char*)malloc(size + 1);
memset(_pstr, 0, size + 1);
}
CxString(const char* p)
{
cout << "CxString(const char* p);" << endl;
int size = strlen(p);
_pstr = (char*)malloc(size + 1);
strcpy_s(_pstr, size + 1, p);
_size = strlen(_pstr);
}
CxString& operator=(const CxString& p)
{
cout << "CxString& operator=(const CxString& p)" << endl;
if (this != &p)
{
if (_pstr != nullptr)
{
free(_pstr);
_pstr = nullptr;
}
int size = strlen(p._pstr);
_pstr = (char*)malloc(size + 1);
strcpy_s(_pstr, size + 1, p._pstr);
_size = strlen(_pstr);
}
return *this;
}
~CxString()
{
free(_pstr);
}
};
int main()
{
CxString string1(24);
CxString string2("aaaa");
CxString string4 = 10;
CxString string5 = "bbb";
CxString string6 = 'a';
string1 = 1024;
system("pause");
return 0;
}
|