Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/109: Рейтинг темы: голосов - 109, средняя оценка - 4.96
6 / 6 / 2
Регистрация: 12.02.2012
Сообщений: 224
1

Когда надо использовать списки инициализации, а когда можно заменить их констуктором по умолчанию?

09.09.2012, 20:23. Показов 20897. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1)Любезные,скажите когда надо исп. списки инициализации, а когда можно заменить констуктором по умолчанию?
2) правильно ли утверждение,что списки инициализации можно заменить к.по умолчанию?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2012, 20:23
Ответы с готовыми решениями:

Когда стоит использовать класс, а когда лучше обойтись без них?
Когда стоит использовать класс, а когда лучше обойтись без них? Когда следует использовать...

Когда нужно использовать &ссылки ,а когда *указатели?
Желательно с примерами

Когда использовать WinAPI, а когда функции языка?
Не совсем понимаю, когда нужно использовать WinAPI в приложении, а когда функционал самого ЯП...

Когда использовать указатели, а когда передачу по ссылке?
Когда использовать указатели, а когда передачу по ссылке?

24
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
01.02.2015, 01:56 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
Это именно инициализация, а не присвоение.
hoggy, я написал что это инициализация с синтаксисом присвоения:
Цитата Сообщение от IGPIGP Посмотреть сообщение
А присвоение при объявлении и в теле конструктора это инициализация.
Вы стали спорить и я показал, что имел ввиду под "присвоение при объявлении " : int a = 123;

И оказалось что:
Цитата Сообщение от hoggy Посмотреть сообщение
Это именно инициализация, а не присвоение.
Давайте так: Вы правы. И всё.
0
0 / 0 / 0
Регистрация: 14.04.2016
Сообщений: 3
13.09.2016, 11:04 22
В догонку:
есть несколько типов инициализаций, но что можно сказать про эту инициализацию:
C++
1
      int i=22 ; // direct, copy? (C++98)
И чем
C++
1
        int i=22;
отличается от
C++
1
2
        int i; 
        i=22;
or
C++
1
        int i(22);
А , например,
C++
1
2
3
       Type i1;
       Type i2;
       i2=i1;
отличается от
C++
1
2
       Type i1;
       Type i2=i1;
(Type - пользовательский тип...
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
13.09.2016, 14:19 23
Цитата Сообщение от player1975 Посмотреть сообщение
есть несколько типов инициализаций, но что можно сказать про эту инициализацию:
C++
1
int i=22 ; // direct, copy? (C++98)
copy.
сокращенная запись для
C++
1
int i( int(22) );
Цитата Сообщение от player1975 Посмотреть сообщение
И чем
C++
1
int i=22;
отличается от
C++
1
2
int i;
i=22;
or
C++
1
int i(22);
первое - инициализация (copy), второе - не инициализация, это присваивание, третье - direct initialization.

Цитата Сообщение от player1975 Посмотреть сообщение
А , например,
C++
1
2
3
Type i1;
Type i2;
i2=i1;
отличается от
C++
1
2
Type i1;
Type i2=i1;
Первое - это не инициализация, это присваивание.
Второе - copy initialization, как в первом примере с целыми числами.
0
Заблокирован
17.04.2017, 22:37 24
Цитата Сообщение от silent_1991 Посмотреть сообщение
IGPIGP, да банальнейший пример - вызов конкретного конструктора базового класса можно сделать только в списке инициализации.
А зачем разработчики языка так сделали?
Какой в этом смысл?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
18.04.2017, 05:49 25
ИсмаилПркопенко, очень просто. К моменту, когда мы входим в тело конструктора производного класса, та его часть, которая относится к базовому классу, уже должна быть полностью инициализирована. В общем случае только базовый класс знает, как именно должны быть инициализированы его поля, там может быть и простейшая инициализация конкретными значениями, и очень сложная работа, вплоть до, например, получения данных для инициализации по сети. А инициализация производного класса может (и зачастую будет) зависеть от значений, установленных в процессе инициализации базового класса. Более того, конструкторы базовых классов будут вызваны до инициализации любых полей производного класса, в том числе когда инициализация происходит через список инициализации, потому что в этом случае также может возникнуть зависимость.
1
18.04.2017, 05:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2017, 05:49
Помогаю со студенческими работами здесь

Когда нужно использовать структуры, когда классы, а когда словарь?
Хеллоу. Не могу понять, когда, что, нужно использовать. Допустим мне нужно получить объект,...

1c8 когда лучше использовать запрос, а когда выбор
Хочется в целях повышения образованности уточнить такой момент - когда в восьмерке лучше...

Когда следует использовать значимый тип, а когда ссылочный?
Почитал про значимые и ссылочные типы, ознакомился с отличиями между ними, как работают те и...

Когда нужно использовать ссылку с out, а когда с ref
Не давно начал учить С# но не могу понять когда надо использовать оut или ref , я так понимаю что...


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

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