假设我们有一个基类 Country,它以国家字母作为变量。每个派生类都应该有自己的国家字母。我试过这个,但它显然不起作用:
class Country
{
protected:
char letter;
virtual void set_letter(){}
public:
Country()
{
set_letter();
}
};
class England : public Country
{
void set_letter()
{
letter = 'e';
}
};
我的想法是派生类将继承基类的构造函数,该构造函数将调用“set_letter()”方法,每个类都不同。但现在我知道这是不可能的,因为构造函数将从基类而不是派生类调用方法。
另一种选择是写“字母='e';” 在每个构造函数定义体中。但是如果一个类有很多构造函数呢?我每次都得写。
我希望你明白我在说什么。什么是最好的解决方案?也许是这样:
class Country
{
protected:
virtual char letter() const = 0;
.
.
.
};
class England : public Country
{
static const char let = 'e';
char letter() const
{
return let;
}
.
.
.
};
是的,它有效。但我想知道有没有一种方法可以做到这一点,而无需将“字母”作为一种方法。不要问为什么...谢谢