gpt4 book ai didi

c++ - 虚方法继承类

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

我有:

class A
{
virtual void get();
}

class B: public A
{
void get();
}

class C: public B
{
void get();
}

int main()
{
B *i;

i = new C();
i.get();
return (0);
}

如果 A::get() 是虚拟的:

i.get() calls C::get()

如果 A::get() 不是虚拟的:

i.get() calls B::get()

我的问题是:

为什么我不需要在 B::get() 上放置 virtual 来使用 C::get() 和 B.get()?

最佳答案

从基类覆盖虚拟方法的方法将是隐式虚拟的,工具 - 适用于整个继承链。

struct A {
virtual int f(int);
};

struct B : A {
int f(int); // overrides A::f, implicitly virtual
void g(float);
};

struct C : B {
int f(int); // overrides B::f, implicitly virtual
int f(char); // doesn't override anything, not virtual
void g(float); // doesn't override and isn't virtual,
// because B::g is not virtual either.
// It hides B::g instead.
};

关于c++ - 虚方法继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21185053/

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