从非空基类继承的空派生类

时间:2013-09-25 19:14:00

标签: c++ inheritance empty-class

class Base 
{
   int i ;
};

class Derived : public Base { } ;

int main()
{
   cout << sizeof(Derived);
}

Output :
 4

在Base类中,由于我是私有的,因此不应该继承到Derived Class。因此,Base类应该充当空类。而sizeof空类是1,那么为什么它显示为4?

3 个答案:

答案 0 :(得分:4)

Derived类仍然在i中包含Base,它只是无法访问,因此大小为4是因为i

答案 1 :(得分:0)

大小仍为4,因为Base的大小为4.让我们说Base有一个函数     public: int getI() {return i;} 那么你就可以调用Derived::getI(),因此Derived确实需要包含私人基础成员。

答案 2 :(得分:-2)

这里,派生类是公开定义的。这里的定义是“:public base”

因此派生类可以访问基类的所有公共成员和私有成员。它将使所有私有成员在该派生类中公共。如果输出为4,则为i.not 1.如果你写私有而不是它会给出输出1 ..