【发布时间】:2014-05-04 16:43:39
【问题描述】:
在下面的代码中
#include <iostream>
using namespace std;
class A {
public:
A() {}
virtual ~A() {};
};
class B : public A {
public:
B() {}
virtual ~B() {};
};
void process(const A&) {
cout << "processing A" << endl;
}
void process(const B&) {
cout << "processing B" << endl;
}
int main(void) {
A* a = new B;
process(*a);
return 0;
}
运行它的输出变成了
processing A
但我会认为它应该是
processing B
因为a 指向派生类B 而不是A。那么为什么它调用process函数的第一个实现而不是第二个呢?
【问题讨论】:
标签: c++ inheritance polymorphism overloading