Форум программистов, компьютерный форум CyberForum.ru

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

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

И еще, вопрос немножко в сторону от основной темы, а имеют ли какой-либо смысл статические переменные, определяемые внутри нестатических функций-членов класса?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
02.12.2011, 01:56     Инициализация статических членов класса #2
thick_int,

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

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

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

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

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

И такая тоже возможна:
C++
1
int const MyClass::DefaultArraySize = 12;
Но опять же непонятно, почему
Я говорил, что при определении внутри класса статических константных членов приводится только один синтаксис.
Yandex
Объявления
02.12.2011, 02:06     Инициализация статических членов класса
Ответ Создать тему
Опции темы

Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru