100普考 計概 - 普考

Table of Contents

[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處
出處:如題

下列以C++程式語言撰寫之程式執行後的輸出為何?
#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;
}

(A)PCPP (B)PPPP (C)PCCC (D)CCCC

答案是A

可是請問為什麼c.foo()是印出C ?而不是呼叫父類別P的foo() ?

--

All Comments

Bennie avatarBennie2013-06-04
override 覆寫
Doris avatarDoris2013-06-05
不是OVERRIDE 是要做OVERLOADING但沒有用VIRTUAL宣告所以
Susan avatarSusan2013-06-07
都是輸出PP
Quanna avatarQuanna2013-06-11
C的基本觀念,沒寫過就不會知道..
Jacob avatarJacob2013-06-12
C++更正
Enid avatarEnid2013-06-15
c.foo()印出C為什麼是overload 難道我記錯了?
Olive avatarOlive2013-06-17
c沒要做OVERLOAD阿要做OVERLOAD的是PC和RC
Delia avatarDelia2013-06-21
c就是在做OVERRIDE
Gary avatarGary2013-06-24
是我沒看到他問的問題樓上抱歉
Rae avatarRae2013-06-29
XD 不過我比較好奇原PO為什麼不是問pc->foo() rc.foo()
Rachel avatarRachel2013-07-02
可是p的foo並沒有加上virtual,所以沒有overloading
Madame avatarMadame2013-07-06
那c.foo應該是印出父類別p的foo所以應該是印出'P'
Hedda avatarHedda2013-07-10
可是為什麼是印出'C'??各位大大我有理解錯了嗎??
Vanessa avatarVanessa2013-07-12
c.foo()跟virtual沒關係 單純透過繼承的定義即可
Noah avatarNoah2013-07-15
PINKY92你就想成在P和C宣告一個相同名稱的變數 然後用C來
Vanessa avatarVanessa2013-07-16
引用就知道了原理是一樣的
Rebecca avatarRebecca2013-07-19