gpt4 book ai didi

c++ - 关于c++虚函数的一个困惑

转载 作者:行者123 更新时间:2023-11-28 05:52:28 25 4
gpt4 key购买 nike

看看下面的两个类。当我调用“main”中的函数时,编译和程序运行时会发生什么?

#include <iostream>
#include <string>
using namespace std;
class A{
public:
virtual void fun2(){cout<<"A::fun2"<<endl;}
};
class B : public A{
public:
void fun2(){cout<<"B::fun2"<<endl;}
};
int main() {
A *a = new B();
B *b = new B();
//What's the differences among the followings?
a->A::fun2();
b->A::fun2();
A::fun2();

return 0;
}

我知道要打印什么程序,但我想知道为什么。我知道对象中有一个虚函数表,但是当我调用

a->A::fun2()

,它是如何工作的?由于在a或b的v-table中,fun2()会打印B::fun(),程序如何进入函数A::fun2()?

最佳答案

a->A::fun2();

将打印 A::fun2


b->A::fun2();

将打印 A::fun2


A::fun2();

不会被编译

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

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