子类是不是分配其祖先的内存和方法? [关闭]
Posted
技术标签:
【中文标题】子类是不是分配其祖先的内存和方法? [关闭]【英文标题】:Do subclasses allocate memory and methods of their ancestors? [closed]子类是否分配其祖先的内存和方法? [关闭] 【发布时间】:2009-07-28 04:52:04 【问题描述】:在C++中,当一个类继承另一个类时,如果我为子类创建一个对象,那么子类对象也会为超类的所有数据成员和成员函数创建内存吗?
【问题讨论】:
您可以将这个断言重新表述为一个问题,并且您需要一个更有意义的标题。 投票关闭,因此我可以投票重新开放:这是一个非常基本的问题,但现在它已被编辑,这不是一个糟糕的问题。这当然是一个真实的问题。 真的,没有其他人认为应该重新打开它给 OP 一个机会吗? 【参考方案1】:是的(尽管成员函数本身并不需要内存... vtables 是另一个问题,并且是每个类而不是每个实例)- 子类的一个实例“嵌入”,如果你愿意的话,是超类之一。为简单起见,假设所有实例变量都是 32 位整数:如果超类有 3 个,而子类又增加了 2 个,那么子类的每个实例将分配 5 x 4 = 20 个字节——8 个用于它自己的实例变量,加上 12 个用于超类的实例变量。 (如果有任何虚拟方法在起作用,则为 vtable 指针加上 4 个字节)。
那么,问题是什么...?
【讨论】:
以上是关于子类是不是分配其祖先的内存和方法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
怎样才能强制 Rust 获得分配的内存的所有权,而不是通过其安全方法分配的内存?
在 C++ 中删除其类的实例后,分配给 cpp 中定义的全局静态变量的内存是不是被释放?