gpt4 book ai didi

c++ - 静态成员变量如何在 C++ 中表现出多态性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:30 27 4
gpt4 key购买 nike

我想在子类中存储静态字符串,这样它们就不会在内存中重复。可以这样做吗?我希望能够实例化两个 IBM,但只将字符串“IBM”放入内存中一次。

class Company {
static const std::string company_name;
}
class CocaColaCompany : public Company {
static const std::string company_name = "Coca Cola";
}
class IBM : public Company {
static const std::string company_name = "IBM";
}

或者在多态基类中使用静态成员有问题吗?

最佳答案

静态成员和类层次结构不交互。多态性是关于单个实例的。

如果您想要一个特定于子类并固定在那里的公司名称,您应该在基类中使 company_name 成为一个虚拟 getter,并在派生类中覆盖它以返回固定的字符串。

也就是说,您的小示例类层次结构令人担忧,因为它混合了抽象级别。 CocaColaCompanyIBM 都不是 Company 的改进;他们是特定的公司,因此应该是实例。 (这是“是一个”规则可能使您误入歧途的典型方式。)另一方面,CocaColaSubsidiary 可能是 Company 的子类。

关于c++ - 静态成员变量如何在 C++ 中表现出多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com