为什么虚函数不能是静态的和全局的?
why virtual functions can't be static and global?
当我们使虚拟函数静态时会发生什么?我试图在父类中使一个虚拟函数成为静态函数,但它给编译器带来了错误。
虚拟函数的操作是使用当前对象通过其vtable查找要调用的正确方法,这就是为什么它们可以被重写的原因。静态和全局方法不引用对象,因此没有地方存储指向函数的指针。
你可以通过搜索vtable的信息来了解更多信息。
相关文章:
- 将对象创建为全局/静态对象会崩溃,而本地对象不会崩溃
- 全局静态生存期?他们会让你的程序崩溃吗?
- C++如何使用虚拟基类型声明全局静态分配的变量
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 全局静态变量不"staying defined"函数外部
- 为什么不调用全局静态变量的析构函数
- 全局静态变量阴影
- std::初始值设定项列表全局/静态对象的生存期
- 全局(静态编译的)变量位于哪里
- 可以静态访问全局静态变量的静态函数
- 解决由全局静态变量引起的内存问题
- 全局静态常量字符串不会初始化
- 包含数据的全局静态类
- 分配给 cpp 中定义的全局静态变量的内存是否在 C++ 中删除其类的实例后释放
- 我们可以将全局静态变量视为全局变量吗?
- C++-全局静态对象和本地静态对象的构造函数调用不同
- C++从全局静态函数中引用对象
- 全局静态常量shared_ptr被另一个shared_ptr的析构函数奇怪地窃取和删除,为什么?
- 如何查找全局静态初始化
- 离开 c++ 应用程序而不运行全局静态对象的析构函数