Срок службы класса хранения C ++ extern - PullRequest
1 голос
/ 05 января 2011

Я новичок в C ++ и родом из Java.Я хотел бы подтвердить следующее:

Я читаю C ++ по анализу Ира Поля , и в книге говорится, что продолжительность жизни для файла / extern переменной / функциипродолжительность программы (что имеет смысл, поскольку переменная не объявлена ​​в классе) .

Что я хочу знать;это также случай для переменной, объявленной в классе?Если нет, если переменная объявлена ​​в классе, то заставляет ли переменная использовать класс хранения auto?

Спасибо.

1 Ответ

3 голосов
/ 05 января 2011

Переменная-член в классе имеет срок службы, соответствующий сроку службы экземпляров класса, если не объявлено static.

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

Этот Foo и, следовательно, x, имеют срок действия программы:

static Foo foo;

Это auto:

int main() { Foo foo; }

Этот динамически распределяется и действует до тех пор, пока Foo не станет delete 'd:

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

В каждом случае y имеет срок действия программы.

...