C++11添加了很多新特性,使C++看上去更加的灵活和面向对象,其中新关键字default值得我们关注一下。
我们知道有时候当我们仅创建了有参构造函数后,如果你想调用无参构造函数编译是会报错的。因为一旦你自己定义了构造函数,系统的默认构造函数是被屏蔽的,也就是说此时是没有无参构造函数的,所以我们需要自己定义一个无参构造函数。但是现在在C++11中,如果我们仅定义了有参构造函数,可以通过default关键字让默认构造函数恢复。具体实现如下:
class CString
{
char* _str = nullptr;
public:
CString() = default; //恢复默认构造函数
CString(const char* pstr) : _str(nullptr) //自定义的有参构造
{
UpdateString(pstr);
}
~CString()
{
if (_str)
free(_str);
}
void UpdateString(const char* pstr) throw()
{
if (pstr == nullptr)
return;
if (_str)
free(_str);
_str = (char*)malloc(strlen(pstr) + 1);
strcpy(_str,pstr);
}
char* GetStr() const throw()
{
return _str;
}
};