class |
答題得分者是:aftcast
|
ioeouyvl
一般會員 發表:1 回覆:2 積分:0 註冊:2011-03-12 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
((B*)pa)->~B(); ===================引 用 ioeouyvl 文 章=================== 請問 有沒有其他方法可以呼叫B的解構子(如果不用virtual) [code cpp] 請在此區域輸入程式碼 [/code] class A { public: A(){cout <<"A 建構子" <
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
ioeouyvl
一般會員 發表:1 回覆:2 積分:0 註冊:2011-03-12 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
int main() { A *pa=new B(); delete pa; } 因為你new的時候就採取了向上轉型,即把子類別以父類別來看待、使用。就某些情形下這是好的使用方式。 然而你一但把 b 當父類別的a 來用使,b因伴演父類,所以就無法使用子類的東西。 但是,你知道的,b本就是用new B();生出來的,他100%就是b。所以,一定可以使用b的法方。但你得要讓compiler知道,它要換回原來的角色。 所以,那寫法就是把b物件,再轉回原來的b類別,如此就可以直接隨作b的方法,包含它的解構了! ===================引 用 ioeouyvl 文 章=================== 請問前輩 這麼寫的要怎麼解釋阿???為什麼它可以這樣做????
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
ioeouyvl
一般會員 發表:1 回覆:2 積分:0 註冊:2011-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |