Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
1

Как инициализировать переменные?

26.08.2015, 16:11. Показов 2265. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Где можно полно осведомиться о том как инициализируются переменные в C++ для каждого типа?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2015, 16:11
Ответы с готовыми решениями:

Не могу инициализировать переменные класса
Доброго времени суток, проблема такая: есть функция getscore (строки 92-106), всё вроде работает,...

Где инициализировать переменные класса?
Почему я не могу инициализировать переменную непосредственно в описании класса? class Primer...

Как инициализировать компоненты в переменные в C#
Добрый день! Как разобраться. Нужно написать довольно простую программу. Дана форма, на ней 2...

Как создавать и инициализировать глобальные переменные?
Hi guys and ladys. Суть вопроса в следующем, как создавать глобальные переменные и тут же их...

4
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.08.2015, 16:19 2
VoltDeMar, Конкретнее. В каком случае?
C++
1
T v = T();
Инициализация переменной любого типа нулем (для класса с конструктором - вызов конструктора, для POD типов - ноль).
1
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
26.08.2015, 16:22  [ТС] 3
Не 4 основных типа, а все возможные типы в C++, включая указатели, массивы и т.д.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.08.2015, 16:30 4
VoltDeMar, Курите стандарт параграф 8.5.
Ну или если вкратце:
An object whose initializer is an empty set of parentheses, i.e., (), shall be value-initialized.

To value-initialize an object of type T means:
if T is a (possibly cv-qualified) class type (Clause 9) with either no default constructor (12.1) or a
default constructor that is user-provided or deleted, then the object is default-initialized;
if T is a (possibly cv-qualified) class type without a user-provided or deleted default constructor, then
the object is zero-initialized and the semantic constraints for default-initialization are checked, and if
T has a non-trivial default constructor, the object is default-initialized;
if T is an array type, then each element is value-initialized;
otherwise, the object is zero-initialized.

To zero-initialize an object or reference of type T means:
(6.1) — if T is a scalar type (3.9), the object is initialized to the value obtained by converting the integer literal
0 (zero) to T; 104
(6.2) — if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class
subobject is zero-initialized and padding is initialized to zero bits;
(6.3) — if T is a (possibly cv-qualified) union type, the object’s first non-static named data member is zero-
initialized and padding is initialized to zero bits;
(6.4) — if T is an array type, each element is zero-initialized;
(6.5) — if T is a reference type, no initialization is performed.

To default-initialize an object of type T means:
(7.1) — If T is a (possibly cv-qualified) class type (Clause 9), constructors are considered. The applicable
constructors are enumerated (13.3.1.3), and the best one for the initializer () is chosen through
overload resolution (13.3). The constructor thus selected is called, with an empty argument list, to
initialize the object.
(7.2) — If T is an array type, each element is default-initialized.
(7.3) — Otherwise, no initialization is performed.
Таким образом инициализация вида
C++
1
T obj = T();
всегда инициализирует переменную.
1
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
26.08.2015, 18:37 5
Цитата Сообщение от ForEveR Посмотреть сообщение
всегда инициализирует переменную
Только если T - это не массив.

Тут можно вспомнить uniform initialization syntax из С++11:
C++
1
T obj{};
Который удовлетворяет определению "всегда".
1
26.08.2015, 18:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2015, 18:37
Помогаю со студенческими работами здесь

Как передать в функцию переменные и там их инициализировать?
Как передать в функцию переменные и там их инициализировать при условии что передаваемые значения...

Как при создании экземпляра класса инициализировать переменные вложенного класса
Здравствуйте. Подскажите пожалуйста как при создании екземпляра класа инициализировать переменные...

в PHP можно не инициализировать переменные?
Что-то потерялся, не пойму почему так:echo $q = "SELECT * FROM ?n WHERE ?n = 'on' ORDER BY ?n ";...

Как инициализировать новую форму, с такими же свойствами как и родительская?
Здравствуйте, подскажите пожалуйста, как создать новую форму, с такими же кнопками и с таким же...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru