大家都知道當我們宣告乙個類時,系統會提供乙個預設建構函式。當我們需要提供引數進行對類資料成員進行初始化時
,就需要對類的帶參建構函式進行過載。同時,如果我們需要呼叫預設建構函式進行類資料成員的初始化時,還需要對類的
預設建構函式進行過載。也許就在這一塊,我們很多人都遇到過同樣的錯誤:
當我們給出乙個帶預設引數的建構函式,並且過載乙個預設建構函式,當我們定義乙個類物件時,如果不傳遞引數,會出現
二義性錯誤。因為我們沒有傳遞引數時,系統預設又兩種選擇,一種是呼叫預設建構函式,另一種是呼叫帶參建構函式並傳
遞預設引數。
如下
1class
complex 2
1112 complex(float r = 0, float i = 0
) 13
17};
18int
main()
19
在編譯的時候出現錯誤:
1"color:#ff0000;
">error: call of overloaded 『complex()』 is ambiguous
對此,有一下兩種解決方法
1.去掉預設建構函式。
1class
complex 2
11 };
這時,當我們不給建構函式傳遞引數時,系統會傳遞預設引數以對類資料成員進行初始化。
complex c;
相當於complex c(0,0);
2.去掉帶參建構函式的預設引數
1class
complex 2
1112 complex(float r, float
i)
13
17 };
complexc;
相當於complex c();
C 函式過載, 預設引數
在我們的自然語言當中,乙個詞在不同的情景之下可能會有多重不同的含義,但是我們可以通過合理地判斷來確定該詞的真正含義,這種情況,我們可以說該詞被 過載 了.關於函式過載的概念 函式過載其實就是函式的一種特殊的情況,在我們的c 中允許在同一作用域當中宣告幾個功能類似的同名函式,但是這個同名函式的形參列表...
C 預設引數 函式過載
預設引數 預設引數是宣告或定義函式時為函式的引數指定乙個預設值。在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。例void testfunc int a 0 intmain 預設引數分類 1.全預設引數 void testfunc int a 10,int b 20,int c ...
C 函式過載 預設引數以及命名空間
c 入門 在接觸c 之前太多人都說 c 很難,非常難 今天我也要開始一探這c 的水了,為了避免淹死,索性我也就不去那深水區蹚了,就在這淺灘裡走一走。c 是一門通用的程式語言,廣泛應用於系統軟體與應用軟體的開發,而我一直一來學習的c語言幾乎是c 的乙個子集。所以c語言支援的語法c 基本都支援並且需要用...