[問題] C++宣告物件和繼承的問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++
問題(Question):
為何是印出" P C P P "的結果?
困擾了一下午的問題....想不太懂還請高手指導...謝謝
程式碼(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(); //一直以為是印出"P C C C" 結果是印出"P C P P"
pc->foo();//pc不是該指向c 所以應該會操作c的metod?
rc.foo();//rc也是同上?
return 0;//還是說因為原來宣告是P 所以會操作P的metod?
//也不是很明白C++在這幾行程式碼中實際運作的情況
//感恩...
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.238.199.157
→
01/21 18:59, , 1F
01/21 18:59, 1F
→
01/21 19:11, , 2F
01/21 19:11, 2F
→
01/21 19:12, , 3F
01/21 19:12, 3F
推
01/21 21:17, , 4F
01/21 21:17, 4F
→
01/21 21:42, , 5F
01/21 21:42, 5F
#int main() {
P p;
C c;
P a;
P b=c;
a=c;
//謝謝以上的大大和ppc大大
a.foo(); //我又有一個問題
b.foo(); //像這樣 印出來的結果也是"P P"
//印出的是C的父類別P的foo()
//還是原本a b物件的foo()呢?
return 0;
}
※ 編輯: yscgk 來自: 36.238.199.157 (01/21 22:35)
→
01/22 00:52, , 6F
01/22 00:52, 6F
→
01/22 00:52, , 7F
01/22 00:52, 7F