作者xxxx9659 (嘎嘎嘎嘎嘎)
看板C_and_CPP
標題Re: [問題] 預設引數的疑問
時間Fri Jul 30 11:08:27 2010
※ 引述《jehovah (Lucius)》之銘言:
: 請教個很呆的問題
: 例如宣告個function prototype
: 預設引數
: 1. int example(int=0);
: 2. int example(int x=0);
: 兩者在記憶體配置上有什麼不同嗎? 謝謝
沒有不同
在宣告寫名稱只是寫爽的 類是註解的功用
編譯器會自動忽略宣告時的引數名稱
例如這樣編譯也會過
void example(int aaa=0, int bbb=0); //宣告時名稱亂寫
void example(int x, int y){ //實作
cout << x+y
}
但是宣告和實作只有一個可以寫預設引數的值
例如這樣是正確的
void example(int x=0, int y=0);
void example(int x, int y){
cout << x+y;
}
這樣也正確
void example(int x, int y);
void example(int x=0, int y=0){
cout << x+y;
}
但是這樣就錯了!!!!!
void example(int x=0, int y=0);
void example(int x=0, int y=0){
cout << x+y;
}
真是神奇
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.131
推 VictorTom:小弟一直以為有宣告是寫在宣告, 原來是撞到錯的case.Orz 07/30 11:29
→ loveme00835:誰說是錯的 ? 分散在不同編譯單元, 可以提供不一樣的 07/30 11:59
→ loveme00835:預設引數, 差別在於你呼叫的時候看到的是哪一個宣告 07/30 11:59
推 jehovah:感謝這麼用心的解答^^ 07/30 13:38
推 VictorTom:原來是這樣用的, 謝謝l大:) 所以錯的是不可以同時出現兩 07/30 14:25
→ VictorTom:個地方都提供引數在某個編譯單元囉@_@" 07/30 14:25
→ VictorTom: ^ 預設 07/30 14:25
→ xxxx9659:呼叫的時候看到的是哪一個宣告~~~~原來如此 07/31 05:40