如果我初始化一个非 0 的虚函数会发生什么?它会创建一个纯虚函数还是在内存中发生其他事情?

问题描述

我已经为虚函数创建了一个定义并用 (=1) 对其进行了初始化,当我编译一个项目时,它会成功编译。因为它被成功编译,我想知道实际发生了什么。它是否创建了纯虚函数或发生了其他任何事情。

解决方法

没有将虚函数初始化为值这样的事情。语法 = 0 是一个纯说明符,而不是一个初始化器。赋予特殊意义的是特殊语法;它指定虚函数是纯虚函数,必须由继承自它的任何类实现。

跟在 = 1 函数声明之后的

virtual 在 C++ 中没有语法意义,因此是格式错误的。如果您没有收到编译错误,那么您的编译器要么有问题,要么根本没有“初始化”virtual 函数。