gpt4 book ai didi

c++ - C++虚函数的输出

转载 作者:行者123 更新时间:2023-11-30 02:25:06 25 4
gpt4 key购买 nike

我对以下代码的输出感到很困惑。输出是

A::Fun
C::Do

谁能解释一下为什么会这样?任何帮助将不胜感激!

#include <iostream>
using namespace std;
class A {
private:
int nVal;
public:
void Fun()
{ cout << "A::Fun" << endl; }
void Do()
{ cout << "A::Do" << endl; }
};
class B:public A {
public:
virtual void Do()
{ cout << "B::Do" << endl; }
};
class C:public B {
public:
void Do( )
{ cout << "C::Do" <<endl; }
void Fun()
{ cout << "C::Fun" << endl; }
};
void Call(B & p) {
p.Fun(); p.Do();
}
int main() {
C c; Call(c);
return 0;
}

最佳答案

Fun 函数在任何基类中都不是虚函数。在函数Call 中,编译器只知道A::Fun 函数,它不知道C 类。它所知道的是你有一个对 B 对象的引用,并且没有 B::Fun 所以它在父类中查找并找到 A::有趣的函数。

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

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