And*_*eas 4 c++ polymorphism static
我想在子类中存储静态字符串,以便它们不会在内存中重复.可以这样做吗?我希望能够实例化两个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";
}
Run Code Online (Sandbox Code Playgroud)
或者使用具有多态基类的静态成员是否存在问题?
Seb*_*edl 10
静态成员和类层次结构不会交互.多态性是关于个体的.
如果您想要一个特定于子类并在那里修复的公司名称,您应该company_name在基类中创建一个虚拟getter并在派生类中重写它以返回固定字符串.
也就是说,你的小例子类层次结构令人担忧,因为它混合了抽象层次.既不是也CocaColaCompany没有IBM改进Company; 他们是特定的公司,因此应该是实例.(这是一种典型的方式,其中"是一个"规则可能会导致你误入歧途.)另一方面,CocaColaSubsidiary可能是一个子类Company.