class A{
void virtual a(){}
};
int main() {
std::cout<<sizeof(A);
}
在上述情况下,为什么编译器不使函数成为非虚拟函数并节省分配给它的空间。有没有不这样做的具体原因?
我正在使用 gcc 4.7 编译器,如果它是特定于编译器的话。
最佳答案
因为您可能会在单独的翻译模块中创建派生类。
理论上这可以在链接时解决,但这会涉及很多工作,所以在实践中不会发生(AFAIK)。
关于c++ - 为什么编译器在可能的情况下不使虚函数成为非虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410190/