2011-01-05 15 views
1

Ich bin ein C++ Neuling und komme aus einem Java-Hintergrund. Ich möchte folgendes bestätigen:C++ extern Speicher Klasse Lebensdauer

Ich lese C++ durch Sezieren von Ira Pohl und das Buch heißt es, dass die Lebensdauer für eine Datei/extern Variable/Funktion ist die Dauer des Programms (was sinnvoll ist, weil die Variable nicht in einer Klasse deklariert ist).

Was ich wissen will; Ist das auch bei einer in einer Klasse deklarierten Variablen der Fall? Falls nicht, wenn eine Variable in einer Klasse deklariert ist, wird dann die Speicherklasse verwendet?

Danke.

Antwort

3

Eine Membervariable in einer Klasse hat eine Lebensdauer, die der Lebensdauer der Klasseninstanzen entspricht, sofern sie nicht als static deklariert sind.

struct Foo { 
    int x; 
    static int y; 
}; 

Diese Foo und damit seine x, hat Programm Lebensdauer:

static Foo foo; 

Dieser ist auto:

int main() { Foo foo; } 

Dieser dynamisch zugewiesen wird und lebt, bis der Foo ist delete 'd:

int main() { Foo *foo = new Foo; } 

In jedem Fall hat die y Programmlebensdauer.