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

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

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

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

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

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

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

C++ Инициализация вещественных статических константных полей класса С++
C++ Инициализация членов класса нулями
C++ Инициализация объектов класса в конструкторе другого класса
Определение статических переменных - членов класса C++
Своеборазное переопределение статических членов в потомках C++
Инициализация статических объектов без конструктора C++
BST дерево. Инициализация класса внутри класса C++
Принцип инициализации статических членов шаблона класса C++
C++ Создать класс CheckerBoard (особенности строения класса - инициализация константных членов класса)
Инициализация в объявлении константных статических (const static) членов-данных класса. C++
Инициализация членов в объявлении класса C++
Инициализация членов дочернего класса членами класса родителя C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
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     Инициализация статических членов класса
Ответ Создать тему
Опции темы

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