Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: static class member
Форум на CrossPlatform.RU > Разработка > С\С++
rp80
Вот так делать нельзя:
class X
{
   X x;
};


потому что на момент компиляции размер X не определен и компилятор не знает сколько памяти выделить под x.

А вот так можно:
class X
{
   static X x;
};

Правильно ли я понимаю, что это допустимо потому, что объявление статического мембера не является его определением и память поэтому не выделяется под него, до тех пор, пока не встретится его определение за пределами класса?

Спасибо.
Iron Bug
видимо, так оно и есть. хотя мне никогда не приходила в голову идея делать статический член класса типа того же класса.
по сути, статические члены класса к самому классу не относятся и размер представителя класса от них не зависит.
rp80
Цитата(Iron Bug @ 13.12.2011, 9:34) *
видимо, так оно и есть. хотя мне никогда не приходила в голову идея делать статический член класса типа того же класса.
по сути, статические члены класса к самому классу не относятся и размер представителя класса от них не зависит.


У страуструпа есть такой пример. Он использует статический член класса вместо глобальной переменной. Класс Дата. А в статик мембере хранит предопределенную дату (сегодняшнюю, например).
Можно и другие примеры придумать похожие.
wiz29
Цитата(rp80 @ 12.12.2011, 23:35) *
Правильно ли я понимаю, что это допустимо потому, что объявление статического мембера не является его определением и память поэтому не выделяется под него, до тех пор, пока не встретится его определение за пределами класса?


Да правильно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.