Ich habe eine Frage darüber, welche Funktion gewählt wird, um ein statisches Klassenmitglied zu initiieren.Welche Funktion wird zum Initialisieren des statischen Klassenmembers verwendet?
//Base.h
class Base
{
private:
static int count;
static int countInit()
{
return 10;
}
public:
Base()
{
}
};
//and Base.cpp
static int countInit()
{
return 0;
}
int Base::count=countInit();//member function is used.
static int local_count=countInit();//the local one in Base.cpp
Die Variable Base::count
mit Base::countInit()
initialisiert statt der countInit()
in Base.cpp definiert. Aber die local_count
wird von der lokalen countInit
initialisiert. Also, ich frage mich, gibt es eine Regel wie Koenig Lookup in diesem Fall?
So 'int Basis :: count = countInit() ; 'ruft das Mitglied an? –
@LuchianGrigore, Ja, tut es. Ich war mir nicht bewusst, dass das passiert ist. – chris
wo ist "int Base :: count = countInit();" aufgerufen? Ursache statische Elementfunktion Base :: countInit() count wird nicht nur von countInit() außerhalb des Bereichs der Klasse Base aufgerufen. – lulyon