[問題] 繼承與型態轉換的問題
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
using namespace std;
class P {
public:
void foo() { cout << 'P'; }
};
class C : public P {
public:
void foo() { cout << 'C'; }
};
int main()
{
P p; C c;
P *pc = &c;
P &rc = c;
p.foo();
c.foo();
pc->foo();
rc.foo();
return 0;
}
補充說明(Supplement):
這是今年普考的題目之一 問印出的字串為何
答案為PCPP
第一個P我想應該不會有疑問
第二個C我的想法是因為Class C裡的函式名稱跟Class P裡的一樣
所以覆蓋過去 因此Class C裡等於沒有繼承到Class P的foo函式
因此印出來的是C
第三個P就不懂了 是因為型別轉換嗎?
P *pc = &c實際上處理時會是P *pc =(P)&c嗎?
第四個P應該是跟第三個同樣的東西 只是弄不懂第三個 囧
有實際上用VC++去跑過 的確是PCPP沒錯
煩請版友幫忙解答了 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.219.57.129
推
09/29 10:02, , 1F
09/29 10:02, 1F
→
09/29 10:03, , 2F
09/29 10:03, 2F
→
09/29 16:48, , 3F
09/29 16:48, 3F
※ Sunofgod:轉錄至看板 Examination 09/30 09:17
推
10/05 00:24, , 4F
10/05 00:24, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
11
38