【发布时间】:2021-01-26 12:05:17
【问题描述】:
可能,我误解了 C++ 多态性(虚函数)。 请指出我想念的东西。
源码如下
#include <iostream>
using namespace std;
class A {
public:
virtual void print(void) {
cout<<"class A"<<endl;
}
};
class B : public A {
public:
void print(void) {
cout<<"class B"<<endl;
}
};
class C : public B {
public:
void print(void) {
cout<<"class C"<<endl;
}
};
int main() {
A a;
B b;
C c;
A *pAa = &a;
A *pAb = &b;
A *pAc = &c;
B *pBc = &c;
pAa->print();
pAb->print();
pAc->print();
pBc->print(); // shouldn't be "class B"
return 0;
}
result
------------------------------
class A
class B
class C
class C // shouldn't be "class B"
我的理解是 最后一个打印语句应打印“B 类” 因为 pBc 是 B 类的指针,而 B 类中的 print 函数是非虚成员函数。我找不到关于这种情况的答案。
请告诉我原因或指出我在哪里可以找到答案并 理解 C++ 的多态性。 谢谢。
【问题讨论】:
-
看来你从答案中得到了帮助,然后你可以accept 其中一个。
标签: c++ polymorphism virtual