【问题标题】:Unexpected size for class that inherits twice from same class [duplicate]从同一类继承两次的类的意外大小[重复]
【发布时间】:2020-12-19 12:29:09
【问题描述】:

这里基类的数据成员是私有的。请解释这段代码。为什么这个程序的输出是80

  #include<iostream> 
  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; 
  } 

【问题讨论】:

标签: c++ inheritance


【解决方案1】:

你误解了 private 修饰符的作用。在您的代码 sn-p 中,它只是阻止 A 的非成员和非朋友访问它。它只是一个访问控制修饰符。 子类的实例将具有其父类的数据成员,即使子类不能(直接)访问它。

注意:如果是私有的,即使它包含子类,子类也不能在父类中窥视。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多