gpt4 book ai didi

c++ - 是否可以在不对抽象的父类中的函数使用 virtual 关键字的情况下覆盖 C++ 子类中的函数?

转载 作者:可可西里 更新时间:2023-11-01 16:26:02 24 4
gpt4 key购买 nike

class Parent {
public:
void func1(); // Complete meaningful definition in parent given.

virtual HRESULT func2()=0; // Bcoz of this function Parent class is abstract.
};


class Child: public Parent {
public:
void func1(); // Different definition in child.
};

这在 C++ 中可行吗?我正在重写 func1(),它不是虚拟的,它已经在父抽象类中有一个定义。

最佳答案

[这里假设 Child 扩展了 Parent,这与代码快照显示的不同]

是的,这是可能的[它被称为隐藏] - 但你不会得到 dynamic dispatch行为。

静态类型将定义将调用哪个方法,而不是动态类型。

例如:

Parent* p = new Child;
p->func1();

将调用 Parent::func1()
同时:

Child* c = new Child;
c->func1();

将调用 Child::func1()

关于c++ - 是否可以在不对抽象的父类中的函数使用 virtual 关键字的情况下覆盖 C++ 子类中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620113/

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