gpt4 book ai didi

C++虚函数忽略范围说明符

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

请引用以下C++代码:

#include <iostream>

class A {
public:
virtual ~A() {}
virtual void display() {
std::cout << "Display A" << std::endl;
}
};

class B : public A {
// ! NO 'display()' function in this class.
};

class C : public B {
public:
void display() {
std::cout << "Display C" << std::endl;
B::display();
}
};


int main(void) {
A* ptr = new C();
ptr->display();
delete ptr;

return 0;
}

这是这个程序的输出:

Display C 
Display A

由于未定义 B::display(),我预计该程序会出现编译错误。

有人可以解释这段代码的行为吗?

非常感谢您的宝贵时间!

最佳答案

Could somebody explain the behaviour of this code?

B 简单地继承了 Adisplay 功能。因为,它是虚拟的 B 可以覆盖行为以使其成为不同的东西(即,如果它需要不同的实现,它可以创建一个,否则它可以采用它继承的东西)。

关于C++虚函数忽略范围说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586244/

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