gpt4 book ai didi

c++ - 一个关于C++虚函数的问题

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

我 friend 问我一个虚函数的问题。

如果一个子对象调用了一个虚函数,在什么情况下,这个虚函数真正执行了父类实现中的虚函数?

最佳答案

我认为您需要发布一些代码来阐明您的要求,但是(析构函数除外)基类函数将不会被调用,除非子项从其自己的函数中显式调用它。例如,在:

struct A {
virtual ~A() {}
virtual void f() {}
};

struct B : public A {
virtual void f() {}
};

int main() {
A * a = new B;
a->f();
delete a;
}

只调用了B的虚函数f()。如果你想调用 A::f() ,你必须明确地这样做:

struct B : public A {
virtual f() {
A::f(); // explicit call
}
};

哦,当然在 B 没有声明函数的情况下 - 在这种情况下 A::f() 将始终被调用。

关于c++ - 一个关于C++虚函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894542/

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