派生类的实例化是否为基类的私有成员分配内存
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.
访问
相关文章:
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 是否可以基于私有/受保护成员分配类枚举?
- 将const char * const参数成员分配给新值
- C 构造函数成员分配优化
- SystemC犯错:键入不匹配成员分配
- 为仅读取成员分配值-C
- 将受保护的结构成员分配给朋友
- C :为指针成员分配值
- 派生类的实例化是否为基类的私有成员分配内存
- 静态对象的非静态成员分配在哪里
- 在静态成员分配之前调用函数
- 对象成员分配
- 通过 C++ 中的公共函数为私有成员分配值
- 将静态 constexpr 类成员分配给运行时变量
- qt中的动态成员分配
- 在C++中声明指向结构的指针会自动为其成员分配内存.我错了吗
- 为数据成员分配一个新的随机方向,该方向不同于 c++ 中的当前方向
- 如何在成员初始化列表中为const char*类成员分配内存
- 为结构成员分配的内存是连续的吗?如果struct成员是数组呢?
- c++类成员分配