C++ 虚拟与否?

标签 c++ inheritance virtual

为什么要在两级以上的继承层次中声明一个函数为非虚函数?有人可以给我举个例子吗?

我知道区别是什么以及会发生什么,但我无法真正理解为什么以及何时要这样做。

最佳答案

从语义的角度来看:使其不能被覆盖。

从实际的角度来看:如果没有虚函数,那么就不需要vptr,所以每个实例占用的内存会稍微少一些。此外,正如@Billy 在评论中所说,这意味着不会间接调用成员函数。

关于C++ 虚拟与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387776/

相关文章:

c++ - C++ 中的共享队列

android - 模态对话框关闭后主窗口不接收事件

c++ - 'std::vector<T>::iterator it ;' doesn' t 编译

java - 如何使用 JUnit5 测试抽象接口(interface)?

ruby - 包含模块时使用间接有优势吗(来自 7 周内的 7 种语言,Ruby 第 3 天)

c++ - 是否可以从 C++ 中的基类方法返回派生类?

c++ - 尝试从 std::array 将 .data() 编译为 c++20 中的 constexpr 函数时出错

c++ - 我到底想做多少虚拟?

C++虚拟模板函数

c++ - 继承虚拟派生类的构造函数。