3 во всех случаях, поскольку static int total
, унаследованный SomeDerivedClass
, является точно таким же, как в SomeClass
, а не отдельной переменной.
Редактировать: фактически 4 во всех случаях, как @ejames заметил и указал в своем ответе, который видит.
Редактировать: код во втором вопросе пропускает int
в обоих случаях, но при добавлении его все в порядке, т. Е .:
class A
{
public:
static int MaxHP;
};
int A::MaxHP = 23;
class Cat: A
{
public:
static const int MaxHP = 100;
};
работает нормально и с разными значениями для A :: MaxHP и Cat :: MaxHP - в этом случае подкласс «не наследует» статический элемент от базового класса, поскольку, так сказать, он «скрывает» его с помощью свой собственный одноименный.