【发布时间】:2019-09-12 14:27:50
【问题描述】:
我想编辑一个继承函数name(),并确保在被child 的实例调用时,继承函数info() 将调用child::name() 而不是parent::name()。
class parent {
public:
string name() { return "parent"; }
void info() {
cout << "This class is " << name() << endl;
}
};
class child : public parent {
public:
string name() { return "child"; }
};
int main() {
parent p;
child c;
p.info(); // outputs "parent"
c.info(); // outputs "parent" - I want "child"
}
如何让c.info() 使用child::name()?在info() 之外,我永远不需要name(),而且我真的不想在子类中复制info(),因为我试图避免在我的实际问题中重复相当长的代码块。
【问题讨论】:
-
parent::name()需要标记为virtual和child::name()应标记为override
标签: c++ inheritance polymorphism