C 11 委派建構函式

2021-09-17 23:34:35 字數 1023 閱讀 7154

一 委派建構函式

《深入理解c++11》

委派構造:就是指委派函式將構造的任務派給了目標建構函式來完成這樣一種類構造的方式。

c++11中的委派建構函式是在建構函式的初始化列表位置進行構造的、委派的

「基準版本」的建構函式稱為目標建構函式,呼叫「基準版本」的建構函式稱為委派建構函式

舉例:

namespace demo1 

a(int a) : a() {} // 委派構造

private:

void init()

};}

二  注意1 建構函式既可以同時是目標建構函式和委派建構函式

namespace demo2 

a(int a) : a() {}

a(int a, char* s) : a(a) {} // a(int)既是目標建構函式也是委派建構函式, 注意不能形成環

private:

void init() {}

};}

2 委派建構函式不能有初始化列表

namespace demo3 

// a(int a) : a(), a_(a) {} // 不能同時委派和使用初始化表

a(int a) : a()

private:

void init() {}

int a_;

};}

3 目標建構函式中的異常可以在委派建構函式中捕獲

namespace demo4 

a(int a) try :

a() catch (...) };}

int main()

結果:

C 11中繼承建構函式和委派建構函式

1 繼承建構函式 在c 繼承中,我們可能會遇到下面這個例子 class base base char c m c c private int m value char m c class derived public base 那麼如果我們在構造b的時候想要擁有a這樣的構造方法的話,就必須乙個乙個的...

C 11初窺二 繼承建構函式和委派建構函式

分析了這兩種用法,真想吐槽兩句,這兩個特性確實有實際需要,但客觀來說,現有標準足夠用,而且帶來的代價也非常大,又給c 複雜的語法糖重重的抹了一筆!一 繼承建構函式 繼承建構函式的引入原因 如果基類的建構函式很多,那麼子類的建構函式想要實現同樣多的構造介面,必須一一呼叫基類的建構函式,有點麻煩 於是乎...

C 11 移動建構函式

移動建構函式是什麼?先舉個例子,你有一本書,你不想看,但我很想看,那麼我有哪些方法可以讓我能看這本書?有兩種做法,一種是你直接把書交給我,另一種是我去買一些稿紙來,然後照著你這本書一字一句抄到稿紙上。顯然,第二種方法很浪費時間,但這正是有些深拷貝建構函式的做法,而移動建構函式便能像第一種做法一樣省時...