![](/img/trans.png)
[英]does a derived class object contain private members of the base class? What does it look like in memory?
[英]Does an instantiation of a derived class allocate memory for private members of base class?
我想这个话题是我需要问的。 关于这个主题的一点解释会很好。 请清楚一些问题,例如为什么或为什么不?
例:
class A {
private:
int a;
};
class B : A {
int b;
};
int main (int argc, char **argv) {
B *p = new B(); // Does this allocate memory for a?
}
是。 类对象包含其所有直接非静态数据成员以及任何基类子对象的成员。 访问说明符没有区别; 它们仅限制名称的使用位置。
这取决于你的意思是什么分配 :它不会做一个堆分配或东西。 派生对象将包含从基础继承的成员。 这就是派生类的所有基类都可以看作是子对象。 派生类对象将包含所有这些子对象,并且还将确保它们被正确构造/销毁。
是的它也会为A分配内存。
因为当您从另一个类继承一个class
并且在创建派生类的object
时,Complier将分配等于派生类+基类大小的内存,这样就no loss of data.
base class members
也可以从derived class.
访问derived class.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.