[問題] virtual函式問題
C++的virtual函式問題
class A{
public:
virtual void foo() {cout << "A::foo" << endl;}
};
class B: public A{
public:
void foo() {cout << "B::foo" << endl;}
};
class C: public B{
public:
void foo() {cout << "C::foo" << endl;}
};
int main(void){
C c;
B *q;
q = &c; q->foo();
return 0;
}
我想問的是為什麼 q->foo()的結果是C::foo
B::foo()不是virtual不是應該用B*去指就呼叫B::foo()嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 98.208.56.49
※ 編輯: seedman 來自: 98.208.56.49 (11/03 06:20)
推
11/03 08:41, , 1F
11/03 08:41, 1F
→
11/03 10:40, , 2F
11/03 10:40, 2F
→
11/03 11:48, , 3F
11/03 11:48, 3F
推
11/03 12:45, , 4F
11/03 12:45, 4F
→
11/03 12:46, , 5F
11/03 12:46, 5F
→
11/03 12:46, , 6F
11/03 12:46, 6F
→
11/03 16:24, , 7F
11/03 16:24, 7F
→
11/03 16:57, , 8F
11/03 16:57, 8F
→
11/03 17:07, , 9F
11/03 17:07, 9F
推
11/03 18:31, , 10F
11/03 18:31, 10F