Es wird nur eine Instanz von x
im gesamten Programm geben. Ein nettes Problem ist die Verwendung des CRTP :
Dadurch wird für jede davon abgeleitete Klasse ein anderes Base<T>
und damit ein eindeutiges x
erstellt.
Sie können auch eine "Basen" -Basis benötigen, um den Polymorphismus beizubehalten, wie Neil und Akanksh darauf hinweisen.
Es wird nur eins geben, das von allen drei Klassen geteilt wird. Wenn Sie separate Instanzen benötigen, müssen Sie separate Funktionen in den abgeleiteten Klassen erstellen.
Ich bin mir ziemlich sicher, dass es zwischen A und B geteilt wird.
Wenn Sie unabhängige Variablen haben möchten, können Sie das "Seltsam wiederkehrende Template Pattern" wie folgt verwenden:
%Vor% Natürlich, wenn Sie Polymorphismus wollen, müssten Sie eine gerade "Basis" -Klasse definieren, von der Base abgeleitet ist, da Base<A>
sich von Base<B>
like:
Jetzt können A und B auch polymorph sein.
Ersteres. Lokale statische Variablen sind an die Methode gebunden, die sie enthält, und method
existiert in einer Inkarnation für alle Unterklassen (in der Tat für die gesamte App, obwohl der Rest des Programms die Methode nicht sieht).
Die Variable wird geteilt - es ist pro-Funktion - in diesem Fall ist die Funktion, zu der sie gehört, Base::method()
. Wenn jedoch class Base
eine Vorlagenklasse ist, erhalten Sie eine Instanz der Variablen für jede Instanziierung (jede eindeutige Menge von tatsächlichen Vorlagenparametern) von class Base
template - jede Instanziierung ist eine neue Funktion.
Tags und Links c++ inheritance static-methods static-variables