【发布时间】:2023-03-05 16:37:01
【问题描述】:
我对子类化和使用方法有疑问。
我创建了一个B 类的实例并将其存储为指向A 的指针。但是当我使用指针调用重载方法时,输出是“A”而不是“B”。为什么?
这适用于其他语言,我做错了什么?
#include <iostream>
using namespace std;
class A {
public:
void f() {
cout << "A";
}
};
class B : public A {
public:
void f() {
cout << "B";
}
};
int main() {
A *a = new B();
a->f();
return 0;
}
【问题讨论】:
-
声明 A 的
f()方法是虚拟的。用于在运行时推迟 binging。否则为 -
是的,因为它不是虚拟的
标签: c++ class polymorphism