看板 C_and_CPP 關於我們 聯絡資訊
#include <iostream> using std::cerr; using std::endl; class X { public: X() { cerr << "X()" << endl; } ~X() { cerr << "~X()" << endl; } }; class Y { public: Y() { cerr << "Y()" << endl; } ~Y() { cerr << "~Y()" << endl; } }; int main(){ X a; Y b(); } 以main內的程式來講 我知道宣告class時會呼叫建構子,刪除後會呼叫解構子 但是實際上跑以上程式的結果 X會呼叫建構子與解構子沒錯 但是Y卻不會 這是為什麼? 然後Y b();是什麼意思? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.182.10
nowar100:你把他跟 void func(); 這樣對照,有沒有看出來~ 01/10 22:02
nowar100: Y b () ; 01/10 22:03
legnaleurc:你那樣寫是宣告一個回傳Y的b函式 01/10 22:09
jay060191:所以Y b()只是在main 裡面宣告一個函式b..回傳值為Y 01/10 22:17
chchwy:樓上全部回答錯.main裡面怎麼可以宣告函式 老天 01/10 22:21
jay060191:這我也覺得很奇怪= =a 01/10 22:39
tropical72:c大,樓上們是對的,primer 4e 12-4 p460 指出,這種用法 01/10 22:39
jay060191:因為之前沒看過Y b();的寫法..可能是我才剛接觸 01/10 22:39
tropical72:compiler 會過,而且沒錯(實際可能會有 warnning) 01/10 22:39
tropical72:只是實際上把 b 當作是 class obj 調用時才會出錯. 01/10 22:40
james732:main裡面確實可以宣告函式... 01/10 22:40
legnaleurc:lol 函式裡還可以定義 struct 咧 01/10 22:43
jay060191:謝謝t大,我從primer內看到了 01/10 22:44
Donze:那這樣宣告一個函式要怎麼用他 01/10 22:44
james732:使用大概像這樣 http://nopaste.csie.org/a59fe 01/10 22:46
tropical72:D大是問class還是問main裡再宣告function? 01/10 22:47
chchwy:我掉進c++的語法陷阱裡了 對不起各位orz 01/10 22:57
chchwy:我錯了 請不要理我那個推文 01/10 22:57
Donze:在main裡面的function的使用 不過james大跟我說了 01/10 23:20