📜  C++ |虚函数|问题12

📅  最后修改于: 2021-05-25 22:28:59             🧑  作者: Mango

预测以下C++程序的输出。假定没有对齐,并且编译器完成了虚函数的典型实现。

#include 
using namespace std;
  
class A
{
public:
    virtual void fun();
};
  
class B
{
public:
   void fun();
};
  
int main()
{
    int a = sizeof(A), b = sizeof(B);
    if (a == b) cout << "a == b";
    else if (a > b) cout << "a > b";
    else cout << "a < b";
    return 0;
}

(A) a> b
(B) a == b
(C) a (D)编译器错误答案: (A)
说明: A类具有VPTR,而B类中没有。

在虚拟函数的典型实现中,编译器将VPTR与每个对象一起放置。编译器会在每个构造函数中秘密地向其中添加一些代码。

这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。