看板 C_and_CPP 關於我們 聯絡資訊
我就來猜猜看你想做什麼吧 以下的 code 我直接做我認為應該是你想要的修正 ※ 引述《AdonisFlies (相信自己)》之銘言: class AA { public: AA() { printf("1"); } virtual void F1() { printf("2"); } void F2() { printf("3"); } ~AA() { printf("4"); } } class BB : public AA //BB繼承AA { public: BB() { printf("5"); } virtual void F1() { printf("6"); } void F2() { printf("7"); } ~BB() { printf("8"); } } void main() { AA v1; // 1 v1.F1(); // 2 v1.F2(); // 3 BB v2; // 4 v2.F1(); // 5 v2.F2(); // 6 AA *v3 = new BB(); // 7 v3->F1(); // 8 v3->F2(); // 9 delete v3; // 10 BB *v4; // 11 v4->F1(); // 12 v4->F2(); // 13 BB *v5 = new BB(); // 14 v5->F1(); // 15 v5->F2(); // 16 delete v5; // 17 } =========================================================== 然後以下是我的答案 1: 1 11: (沒東西) 2: 2 12: (應該會有 segment fault) 3: 3 13: 7 4: 1 5 14: 1 5 5: 6 15: 6 6: 7 16: 7 7: 1 5 17: 8 4 8: 6 main結束前: 8 4 4 9: 3 10: 4 然後你的疑問可能有 * 4,7,14: 別鬧了同學, 先回去仔細讀完繼承... * 11: 這也別鬧了, 這裡只有一個指標宣告啊 orz * 10,17: 差別在 v3 和 v5 的型態 * 12,13: 差別在有沒有用到 vptr * main 結束前: 請看 1 和 4 -- [LPH] Oops, your OOP's a problem? 說: 你現在還是看不到狗? ************* 說: 看得到 只是 他們不會跑 就一直呆呆在那邊 一直在起點 [LPH] Oops, your OOP's a problem? 說: 你要按"ㄅㄧㄤˋ"它們才會跑啊@@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.28.92
AdonisFlies:謝謝, 我也被那考題搞昏了, 我只是憑印象打出來 01/06 22:00
AdonisFlies:帶給大家困擾真不好意思... 01/06 22:00
uest:這篇有被m的價值 又豐富又清楚 01/08 00:24