2011-01-05 12 views
1

私はC++の初心者で、Javaのバックグラウンドを使用しています。 (C++ externストレージクラスの寿命

私はアイラ・ポールによって解剖によってC++を読んでいますと、ブックは、ファイル/ extern変数/関数の 寿命がプログラムの期間であると述べている: 私は、次を確認したいと思います変数がクラスで宣言されていないため意味があります)

私が知りたいことは、クラスで宣言された変数の場合もそうですか?もしそうでなければ、クラス内で変数が宣言されていれば、その変数はautoのストレージクラスを使用しますか?

ありがとうございました。

答えて

3

クラス内のメンバ変数には、staticと宣言されていない限り、そのクラスのインスタンスのライフスパンに対応する寿命があります。

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

このFooため、そのx、プログラムの寿命があります。

static Foo foo; 

この1つはautoです:

int main() { Foo foo; } 

この1つは動的に割り当てられたとFooまで住んでいますdelete 'd:

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

どちらの場合も、yにはプログラムの寿命があります。

関連する問題