Wenn statische Elemente vererbt werden, sind sie statisch für die gesamte Hierarchie oder nur dieser Klasse, das heißt:Sind statische Felder geerbt?
class SomeClass
{
public:
SomeClass(){total++;}
static int total;
};
class SomeDerivedClass: public SomeClass
{
public:
SomeDerivedClass(){total++;}
};
int main()
{
SomeClass A;
SomeClass B;
SomeDerivedClass C;
return 0;
}
gesamt 3 in allen drei Fällen wäre, oder würde es 2 für SomeDerivedClass
für SomeClass
und 1 liegen ?
gute Erklärung, aber die numerische Antwort ist eigentlich 4, 3 nicht meine Antwort (http: // Stackoverflow.com/questions/998247/sind-statisch-Mitglieder-ererbt-c/998298 # 998298) –
+1, Hervorragender Punkt, ich bearbeite die Antwort auf Ihre, danke! –
+1, obwohl man "+4 zu was auch immer das statische Mitglied initialisiert wird" richtiger sagen sollte. Das statische Member ist weder lokaler Bereich noch Namespacebereich, daher muss irgendwo eine Definition vorhanden sein, die einen Wert zuweist (_not notly_ zero). Ansonsten erfüllt der Code nicht die Definitionsdefinition und wird nicht kompiliert. – Damon