C++11新關鍵字default

無鞋童鞋發表於2017-07-06

  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;  
    }  
};