【发布时间】:2017-12-15 01:37:57
【问题描述】:
此代码的输出产生“BASE!”。为什么在这个例子中没有调用派生类的复制函数。它们具有相同的签名,根据我的推理,应该调用派生的签名。有什么问题?
#include <iostream>
using namespace std;
class Base{
virtual void copy(const Base&b){
cout<<"BASE!";
}
public:
Base()=default;
Base(const Base&b){
copy(b);
}
};
class Derived: public Base{
void copy(const Base&b) override{
cout<<"DERIVED";
}
};
int main() {
Derived d;
Derived b(d);
return 0;
}
【问题讨论】:
-
你需要在Base中制作复制方法
标签: c++ inheritance