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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция, возвращающая текущую дату http://www.cyberforum.ru/cpp-beginners/thread291447.html
никак толком не могу разобратса с библиотекой time.h можите сказать точную функцию которая возвратит текущую дату и какие аргументы она принемает , и не в формате строки... а то что то у меня не...
C++ Сосчитать количество единиц Сосчитать количество единиц в двоичной записи числа i. http://www.cyberforum.ru/cpp-beginners/thread291435.html
Умножение матрицы S+1 раз C++
Всем привет! помогите пожалуйста решить задачку на С++: 1. умножение матрицы самой на себя s+1 раз 2.умножение матрицы на вектор произвольный ( можно взять Е-единич.) 3.(умножение...
C++ Определить количество повторений
Определить количество повторений каждой из цифр 1,2...9 в числе N в степени N, N<=1000
C++ У покупателя есть n монет достоинством H(1)...H(n) http://www.cyberforum.ru/cpp-beginners/thread291426.html
У покупателя есть n монет достоинством H(1)...H(n). У продавца есть m монет достоинством B(1)...B(l). Может ли купить покупатель вещь стоимостью S так, чтобы у продавца нашлась точная сдача (если она...
C++ Константа. Надо найти константу(количество строк) в будущей матрице, если известно сколько элементов будет и количество столбцов. И тогда как записать константу выражением, или оператором? ОЧЕНЬ нужно. А то... подробнее

Показать сообщение отдельно
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
13.05.2011, 20:23
Это еще не все...

Как это ни странно, но большие проблемы возникают при попытках объявить в классе константный массив встроенного типа! Как мы уже выяснили, константы нельзя инициализировать в теле конструктора, значения им присваиваются только в списке инициализации конструктора. Однако для константного массива встроенного типа не работает даже инициализация нулем.

ПРИМЕЧАНИЕ
Этот вопрос практически не отражен в стандарте, поэтому компиляторы ведут себя по-разному. В системе Visual C++.NET 2003 выдается ошибка компиляции C2439, а Borland C++ Builder 6 выдает только предупреждение W8038 о том, что массив не инициализируется.

Не проходит и отмена константности. Например, зададим массив m0 как константный, а в теле конструктора определим инициализацию в цикле:
C++
1
2
for (int i = 0; i < 10; ++i) 
    const_cast<int>(m0[i]) = 0;
Однако и Visual C++.NET 2003, и Borland C++ Builder 6 отказываются компилировать такой цикл.
Удивительно, но для константного массива из объектов не встроенного типа задавать инициализацию нулем разрешается. Для этого в классе должен быть определен конструктор без аргументов, который вызывается для инициализации каждого элемента константного поля-массива.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru