Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.92
thick_int
Заблокирован
#1

Инициализация статических членов класса - C++

02.12.2011, 01:25. Просмотров 5280. Ответов 3
Метки нет (Все метки)

Непонятно, почему статические члены класса нельзя инициализировать при помощи вот такого синтаксиса:
C++
1
static int const DefaultArraySize(12);
А вот такой синтаксис является вполне приемлемым:
C++
1
static int const DefaultArraySize = 12;
И оба типа синтаксиса являются вполне приемлеыми, если используются вне класса для инициализации либо глобальных переменных, либо статических переменных отдельных функций.

И еще, вопрос немножко в сторону от основной темы, а имеют ли какой-либо смысл статические переменные, определяемые внутри нестатических функций-членов класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2011, 01:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инициализация статических членов класса (C++):

Инициализация в объявлении константных статических (const static) членов-данных класса. - C++
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static int можно? class A{ const...

Инициализация вещественных статических константных полей класса С++ - C++
static const double x=2.15; //c double и float не инициализирует. Почему??

Определение статических переменных - членов класса - C++
Доброе утро! Не могу понять, почему возникает ошибка. Есть класс в Manager.h: class Manager { public: static Manager*...

Принцип инициализации статических членов шаблона класса - C++
Доброго времени суток. Рассмотрим пример: #include <iostream> int foo(){ return 0; } template<class T> struct...

Создать класс CheckerBoard (особенности строения класса - инициализация константных членов класса) - C++
Вот код: #include <iostream> #include <string> using namespace std; const int xSize = 1; const int ySize = 1; class...

Инициализация членов дочернего класса членами класса родителя - C++
Есть уже созданный класс-родитель A. Как эффективно инициализировать дочерний класс B членами класса A?

3
Сыроежка
Заблокирован
02.12.2011, 01:56 #2
thick_int,

В стандарте нет объяснения, почему только одна форма инициализации используется внутри класса для константных статических объектов. Просто там дается синтаксис, который использует форму со знаком присваивания. По крайней мере я не нашел соответствующего объяснения.

Что касается второго вопроса, то смысл конечно имеется, когда надо сохранять состояние функции между ее вызовами.
0
thick_int
Заблокирован
02.12.2011, 02:01  [ТС] #3
Но между прочим, опять же, если разнести определение и инициализацию вот таким вот образом:

C++
1
int const MyClass::DefaultArraySize(12);
то такаяя форма оказывается возможна.

И такая тоже возможна:
C++
1
int const MyClass::DefaultArraySize = 12;
Но опять же непонятно, почему
0
Сыроежка
Заблокирован
02.12.2011, 02:06 #4
Цитата Сообщение от thick_int Посмотреть сообщение
Но между прочим, опять же, если разнести определение и инициализацию вот таким вот образом:

C++
1
int const MyClass::DefaultArraySize(12);
то такаяя форма оказывается возможна.

И такая тоже возможна:
C++
1
int const MyClass::DefaultArraySize = 12;
Но опять же непонятно, почему
Я говорил, что при определении внутри класса статических константных членов приводится только один синтаксис.
1
02.12.2011, 02:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 02:06
Привет! Вот еще темы с ответами:

Инициализация членов класса нулями - C++
Необходимо инициализировать члены класса нулями. class ID { public: int GetKey() { return key; } private: int id, key, qm; ...

Инициализация членов в объявлении класса - C++
В классе: class peltier { public: material p = material('p'); material n = material('n'); peltier(); ~peltier(void); };

Инициализация статических объектов без конструктора - C++
Что-то я как ни вертел этот код, он у меня не заработал. Как я понял, смысл в том что не надо определять initialized, хотя без этого...

Своеборазное переопределение статических членов в потомках - C++
Доброго времени суток! Хотел бы обсудить одну тему: class A{ static int mmm; //................... } class B : public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru