【发布时间】:2020-08-23 08:13:53
【问题描述】:
我问这个关于 C++ 的问题是因为我很熟悉这个问题,但问题本身就很容易解释:是否有一种语言可以派生一个类并使其占用的内存空间比原始类少?
这个问题更像是一个噱头,而不是我试图解决的实际问题,但我可以想象一些真正高性能的代码可以从这种内存优化中受益:
假设我们有:
class Person {
std::string name;
unsigned int age;
}
class PersonNamedJared {
}
理论上,我们在这个子类中不需要字段“name”,因为它总是“Jared”,这样可以提高内存效率。
是否只有通过将Person 中的“名称”字段替换为get_name() 函数来实现这一点,我们只需在PersonNamedJared 中覆盖该函数以始终返回“Jared”?我们如何仍然在基类中设置 name 变量?
我知道这个例子是非常糟糕的做法,但这是我能想到的最好的例子。我认为实施这种模式是有正当理由的。
【问题讨论】:
-
afaik,派生类应该用于对 is-a 关系建模,所以我猜派生类需要至少与其基类一样大。
-
有可能发明这样的语言,但没有理由这样做。始终可以将 所有 数据成员放在叶类中,这样您就不会继承任何不需要的数据。
标签: c++ inheritance derived-class memory-efficient