用處:基類擁有眾多建構函式而派生類只有一些成員函式(資料不多)時,可以直接繼承基類建構函式而不必重寫。
用法:class base
;class derive:base
;注意:如果派生類有多個基類時有可能導致衝突,解決辦法是派生類顯示定義該建構函式
用處:一些建構函式需要呼叫相同的/類似的**段時,可將該**段抽離出來寫。
用法:class info
;注意:建構函式不能同時使用委派建構函式和初始化成員列表
應用:模板建構函式。
class
info
public
:info
(deque<
int>
&d):
info
(d.begin()
,d.end()
);info
(vector<
short
>
&v):
info
(v.begin()
,v.end()
);}
class
info
//移動拷貝
}
c++11在std中新增了move函式將物件左值轉化為右值:v.push_back(move(物件))
注意:使用noexcept防止構造過程中異常而產生野指標。
應用:禁止拷貝只允許移動構造可構造出乙個唯一型資源
c++11 將explicit 範圍擴充套件到自定義型別中
class a{};
class b
}初始化的幾種方式:
pod,普通型別,分為兩類,平凡的和標準布局的
可以用類模板is_pod::value進行判斷
非受限聯合體是c++11對聯合體的擴充套件,現在在union中也可以使用自定義型別
用法:
union test
//~test()
};
不過由於string是非pod,所以必須改造,加上上面注釋的**
用法:return_type operator""_varchar(const char * col,size_t n); //void operator""_w(const char *str,size_t n)
using uint = unsigned int
c 11學習筆記
c 98的 std auto ptr已經被徹底遺棄了,取而代之的是unique ptr shared ptr與weak ptr。大部分時候我們自己手動申請記憶體方式記憶體都是沒有問題的,問題是如果程式很大了之後,乙個複雜的物件,多次拷貝的代價非常高,很多地方都會使用到,只存在乙份拷貝顯然是最好的,這...
C 11新特性學習筆記(二)
c 11引入了lambda 匿名函式 這樣就可以在乙個函式只需呼叫一次的地方使用了,類似內聯函式。c 11 的 lambda 表示式規範如下 capture params mutable exception attribute ret 1 capture params ret 2 capture p...
C 11學習筆記 Type Support
其實主要還是對c 的std庫的學習吧,雖然用的不少但是對c 的全貌還不太了解。主要包括3個部分 基本型別 rtti 萃取技術 traits size t 用的太多了,不說了。ptrdiff t 乙個有符號的型別,通常用來表示兩個指標相減的結果,是乙個機器相關的型別。和size t不同的是,size ...