作者LPH66 ((short)(-15074))
看板C_and_CPP
標題Re: [問題] 繼承函式呼叫問題
時間Wed Jan 6 21:51:24 2010
我就來猜猜看你想做什麼吧
以下的 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