[C++11]委托构造函数
生活随笔
收集整理的這篇文章主要介紹了
[C++11]委托构造函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
委托構(gòu)造函數(shù)允許使用同一個(gè)類中的一個(gè)構(gòu)造函數(shù)調(diào)用其他的構(gòu)造函數(shù),從而簡化相關(guān)變量的初始化。
注意點(diǎn):
1.這種鏈?zhǔn)降臉?gòu)造函數(shù)調(diào)用不能形成一個(gè)閉環(huán)(死循環(huán)),否則會(huì)在運(yùn)行期拋異常。
2.如果要進(jìn)行多層構(gòu)造函數(shù)的鏈?zhǔn)秸{(diào)用,建議將構(gòu)造函數(shù)的調(diào)用寫在初始化列表中而不是函數(shù)體內(nèi)部,否則編譯器會(huì)提示形參的重復(fù)定義。
3.在初始化列表中調(diào)用了代理構(gòu)造函數(shù)初始化某個(gè)類成員變量之后,就不能在初始化列表中再次初始化這個(gè)變量了。
代碼如下:
#include <iostream> using namespace std;class Test { public:Test(){}Test(int a){cout << a << endl;}Test(int a, int b){cout << a << endl;//跟Test(int a)中的代碼一樣cout << b << endl;}Test(int a, int b, int c){cout << a << endl;//跟Test(int a,int b)中的代碼一樣cout << b << endl;//跟Test(int a,int b)中的代碼一樣cout << c << endl;}int a;int b;int c;};委托構(gòu)造函數(shù)
代碼如下:
測(cè)試結(jié)果:
在初始化列表中調(diào)用了代理構(gòu)造函數(shù)初始化某個(gè)類成員變量之后,就不能在初始化列表中再次初始化這個(gè)變量了。
總結(jié)
以上是生活随笔為你收集整理的[C++11]委托构造函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C++11]继承构造函数
- 下一篇: [C++11]统一的数据初始化方式 -