Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С++.Если иницилизировать переменную в структуре при ее объявлении... она становиться константой?

Роман Бессолицин Знаток (374), закрыт 6 лет назад
#include
using namespace std;
struct{
int a = 10;
char b = 'k' ;
} st1;
int main(){
st1 = {3,'u'};
cout << st1.a << endl << st1.b << endl;
}
Лучший ответ
Jurijus Zaksas Искусственный Интеллект (471500) 6 лет назад
Почему? Что мешает тебе сделать st1.a=42; дальше в коде?
Роман БессолицинЗнаток (374) 6 лет назад
а почему через списковую инициализацию нельзя?
Jurijus Zaksas Искусственный Интеллект (471500) Я думаю, это разъясняется вот в этой статье: https://blog.petrzemek.net/2015/10/03/structures-and-member-initializers-in-cpp/
Остальные ответы
Голова Робота Просветленный (36360) 6 лет назад
Нет, эта инициализация "добавляется" к конструктору (даже если конструктор не объявлен).
Роман БессолицинЗнаток (374) 6 лет назад
чево?
Голова Робота Просветленный (36360) Эта фича, про которую ты спрашиваешь, появилась не очень давно, а конструкторы в C++ были всегда. Пример struct A { int a = 10; char b = 'k' ; }; Можно записать так: struct A { int a; char b; A(): a(10), b('k') { } }; или так: struct A { int a; char b; A() { a = 10; b = 'k'; } };
Mr. Kodirovsshik Знаток (479) 6 лет назад
Совершенно нет. Все, что ты делаешь - объявляет значения, используемые по умолчанию, т. е., если значения не заданы явным образом. Когда же ты создаёшь объект структуры и тут же инициализирует его своими значениями, они заменяют значения по умолчанию и это совершенно не значит, что они константные. Вот если бы внутри структуры было бы const int и/или const char, то да, после создания структуры компилятор не позволил бы нам изменять значения членов структуры и было бы обязательным указывать значения при создании объекта
Похожие вопросы