![]() |
|
Модераторы: bsa |
![]()
|
|
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: нет Всего: 2 |
У Шилдта - "Конструктор автоматически вызывается в момент создания объекта т.е. при его объявлении."
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
lv151, правильно. при объявлении объекта. но при объявлении класса.
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
и...?
чем одно мешает другому? |
||||
|
|||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: нет Всего: 2 |
Я запутался
Добавлено @ 16:05 Всё ясно, был невнимателен. Думал что:
Это сообщение отредактировал(а) lv151 - 19.3.2009, 16:31 |
|||
|
||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
если создать обьект как
Это сообщение отредактировал(а) azesmcar - 19.3.2009, 16:12 |
||||||||
|
|||||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
azesmcar, в чем по твоему принципиальное отличие этих строк, что ты написал такую сильную разницу между ними? Между этими двумя записями нет ровно никакой разницы, исключая то, что в первом случе используется копирующий конструктор. И в первом и во втором случае, все non POD члены будут создан конструктором по умолчанию, а в POD типах будет мусор, если обратного не будет указано в списке инициализации |
|||
|
||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: нет Всего: 2 |
Спасибо.
Был невнимателен. Думал что:
: var_(var) - незаметил Это сообщение отредактировал(а) lv151 - 19.3.2009, 16:33 |
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
vinter, не совсем,
результат
Добавлено через 1 минуту и 47 секунд если не делать new
можно так, но MyClass s() компилятор понимает как обявление прототипа функции с возвращаемым типом MyClass. |
||||||
|
|||||||
| lv151 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 916 Регистрация: 11.2.2008 Репутация: нет Всего: 2 |
VC 6.0 -858993460 -858993460 Это сообщение отредактировал(а) lv151 - 19.3.2009, 16:58 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
azesmcar, интересная особенность. Учитывая, что some_class obj; и some_class obj(); эквивалентные записи...
|
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
lv151, VC 6.0 не в счет.
это тоже не совсем так, ибо some_class obj(); это обявление прототипа функции с возвращаемым типом some_class не принимающей параметров.
|
||||||
|
|||||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Добавлю статью из МСДН
http://msdn.microsoft.com/en-us/library/s0wk5dy9.aspx
в стандарте пока не нашел, но не думаю что стоит искать
не думаю что МСДН врет Это сообщение отредактировал(а) azesmcar - 19.3.2009, 18:17 |
||||
|
|||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
с этим никто не спорит, если у встроенных типов добавить скобки при определении, тогда она будет проинициализирована 0. У класса нет разницы, есть скобки или нет. Дефолтовый конструктор вызовется в любом случае.НО при этом он не должен обнулять внутренние pod члены. Возможно это фича студии, что при таком выражении оно обнуляет. Я бы не стал на это полагаться. Добавлено через 1 минуту и 9 секунд
оттуда же кстати |
||||
|
|||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Я бы тоже не стал, потому что нет никакой гарантии что тот кто будет использовать ваш класс - проинициализирует его со скобками. Но если мне не изменяет память Саттер говорил, что класс проинициализированный со скобками, инициализирует также все внутренние pod члены. Добавлено через 2 минуты и 20 секунд
щас GCC проверим Добавлено через 6 минут и 16 секунд
Добавлено через 10 минут и 51 секунду
ну ясно, потому что класс создан без скобок. Я попробую найти что Саттер писал по этому поводу. |
||||||||
|
|||||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |