📜  C++ |继承|问题3

📅  最后修改于: 2021-05-26 03:06:01             🧑  作者: Mango

假定一个整数占用4个字节,并且在以下类中没有对齐,请预测输出。

#include
using namespace std;
  
class base {
    int arr[10];
};
  
class b1: public base { };
  
class b2: public base { };
  
class derived: public b1, public b2 {};
  
int main(void)
{
  cout << sizeof(derived);
  return 0;
}

(A) 40
(B) 80
(C) 0
(D) 4答案: (B)
说明:由于b1和b2都从类库继承,因此在派生类中存在两个类库副本。这种没有虚拟原因的继承浪费了空间和模棱两可。在这种情况下,虚拟基类用于节省空间并避免歧义。例如,以下程序打印48。额外的8个字节用于由编译器存储的簿记信息(有关详细信息,请参见此内容)。

#include
using namespace std;
 
class base {
  int arr[10];     
};
 
class b1: virtual public base { };
 
class b2: virtual public base { };
 
class derived: public b1, public b2 {};
 
int main(void)
{ 
  cout << sizeof(derived);
  return 0;
} 

这个问题的测验

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