總結:
預設引數的建構函式,其預設引數必須置於引數列表的結尾。
設計類的建構函式的時候最好不要同時是用建構函式的過載和帶引數的建構函式。
我們可以想象乙個這樣的場景:某一天書店整理庫存,發現了一些非常老的書,為了盡快清空庫存,店主想了一下,決定開展乙個大甩賣活動,所有的這些書全部以五美元的****。此時如果需要盡快將這些書的資訊錄入到書店的書單中,為了方便,我們可以在book類中新增乙個帶預設引數的建構函式。
[例1] 預設帶參建構函式示例:
#includeusing namespace std;
class book
book(char* a, double p = 5.0);
void display();
private:
double price;
char * title;
};book::book(char* a, double p) //在定義函式的時候可以不指定預設引數
void book::display()
book(char* a, double p = 5.0);
book(char *a);
void setprice(double a);
double getprice();
void settitle(char* a www.078886.cn
);char * gettitle();
void display();
private:
double price;
char * title;
};book::book(char* a, double p) //在定義函式的時候可以不指定預設引數
book::book(char *a)
void book::display()
int main()
在本例中有三個建構函式,乙個是預設建構函式,兩個帶參建構函式,其中乙個為帶有預設引數的建構函式。
在主函式中,通過book類建立harry物件沒有問題,此時建立物件只能呼叫book(char* a, double p = 5.0);建構函式。建立gone物件時則有問題了,此時我們建立物件有兩個與之匹配的建構函式可以呼叫,分別是book(char *a);和book(char* a, double p = 5.0);,此時該呼叫哪乙個呢?無法得知,編譯器只能報錯了。
出現這種情況我們只能極力去避免了,通常而言,在設計類的建構函式的時候最好不要同時是用建構函式的過載和帶引數的建構函式,以避免上述問題。
C 中建構函式預設引數使用
一 include using namespace std class box box box int h,int w,int len int box volume int main box box1 1 不指定第2 3個實參 cout box1 s volume 二 執行 root localho...
C 建構函式預設的引數宣告
c 函式的預設引數指的是在函式宣告或者定義時給形式引數指定預設值,從而在呼叫引數時可以少寫引數,少掉的引數用預設值代替。lz的display 函式的 看起來似乎是可以有s2和s3兩個預設引數,那麼此函式的宣告寫法就是 void display string s1,string s2 string s...
建構函式的引數預設
建構函式中引數的值既可以通過實參傳遞,也可以指定為某些預設值,即如果使用者不指定實參值,編譯系統就使形參取預設值。在建構函式中也可以採用這樣的方法來實現初始化。include using namespace std class a int main 程式執行結果為 4 0可以看到 在建構函式中使用預...