gpt4 book ai didi

c++ - 在继承层次中定义一次方法为virtual,使多态性发挥作用

转载 作者:搜寻专家 更新时间:2023-10-31 00:15:06 25 4
gpt4 key购买 nike

在继承层次结构中将方法定义为 virtual 是否足以使多态性发挥作用。在下面的示例中,Der::f 未定义为 virtuald2->f(); 打印 der2我正在使用 VS IDE(可能只有它...)

class Base
{
public:
virtual void f() { std::cout << "base"; }
};
class Der : public Base
{
public:
void f() { std::cout << "der"; } //should be virtual?
};
class Der2 : public Der
{
public:
void f() { std::cout << "der2"; }
};

int main()
{
Der* d2 = new Der2();
d2->f();
}

最佳答案

是的,如果您只在基类中将方法定义为虚拟方法,多态性就会起作用。但是,这是我在处理一些大型项目时遇到的惯例,即始终在派生类的方法声明中重复 virtual 关键字。当您处理大量具有复杂类层次结构(许多继承级别)的文件时,它可能很有用,其中类在单独的文件中声明。这样您就不必在添加另一个派生类时通过查找基类声明来检查哪个方法是虚拟的。

关于c++ - 在继承层次中定义一次方法为virtual,使多态性发挥作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20650875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com