![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 25.11.2010
Сообщений: 164
|
![]()
Объясните, пожалуйста, зачем инициализацию в классе производить при помощи ":", а не внутри функции?
Код:
Возможно Я Быдлокодер ©.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
так удобнее(ну на вкус и цвет), и я считаю правильнее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 25.11.2010
Сообщений: 164
|
![]()
Ясненько, спасибо.
Возможно Я Быдлокодер ©.
|
![]() |
![]() |
![]() |
#4 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2Пепел Феникса
да нет, удобство тут ни при чем 2t2skler а другого способа ИНИЦИАЛИЗИРОВАТЬ (именно инициализировать) переменную-член в С++ просто нет
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Основная разница проявляется при работе с не-POD типами данных (то бишь, которые имеют сложную структуру, конструкторы и деструкторы). В приведённом примере будет вызван конструктор, а не operator=. Кроме того, это единственный способ инициализировать ссылку в классе или вызывать конструктор базового класса.
Код:
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
ну спасибо за ликбез, но все равно так правильнее
![]() и мне лично удобнее. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
лично я пришёл к выводу, что списки инициализации нужно использовать исключительно для установления связей между компонентами, и ни для чего более.
Само тело конструктора - исключительно для допиливания процедуры инициализации, которую невозможно выполнить в списках инициализации. Непосредственно, захват ресурсов должен выполняться уже после конструктора, например в методе Init(const Param& param); |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Инициализация | Aleksey1989 | Общие вопросы Delphi | 10 | 11.09.2010 21:50 |
Инициализация | Krumyura | Общие вопросы C/C++ | 5 | 20.03.2010 23:37 |
Инициализация DirectX | Pedro | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 30.09.2009 21:06 |
инициализация массива | Arcueid1691 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 01.06.2009 02:36 |
Инициализация TListView | Oburec | Компоненты Delphi | 0 | 04.05.2009 00:30 |