Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Все ли свойства класса, должны инициализироваться, в списке инициализаторов? 
V
    Опции темы
boostcoder
Дата 30.7.2010, 08:49 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



всем привет.
вопрос в теме.

аргументы за, и против?
PM WWW   Вверх
Alca
Дата 30.7.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

 Все ли свойства класса

все ли члены класса?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Fazil6
Дата 30.7.2010, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(boostcoder @  30.7.2010,  08:49 Найти цитируемый пост)
аргументы за, и против? 

а что, есть аргументы против?
PM MAIL   Вверх
Abyx
Дата 30.7.2010, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



зачем спрашивать одно и то же на разных форумах %)

то что инициализировать не обязательно - инициализировать не обязательно %)
PM MAIL   Вверх
Earnest
Дата 30.7.2010, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Все члены должны инициализироваться в конструкторе. А в списке инициализации или в "теле" - не так важно в общем случае. Например сложные выражения я предпочитаю писать в "теле", если, конечно, можно оставить член без инициализации. Кроме того, если член класса имеет конструктор по-умолчанию, то упоминать его не стоит, это только засоряет код.


--------------------
...
PM   Вверх
boostcoder
Дата 30.7.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Abyx @  30.7.2010,  09:49 Найти цитируемый пост)
зачем спрашивать одно и то же на разных форумах %)

пример?
PM WWW   Вверх
mrbrooks
Дата 30.7.2010, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



честно говоря не совсем ясна проблема. в чем соль то ТС? что мешает жить?  smile 
PM MAIL   Вверх
Abyx
Дата 30.7.2010, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Цитата(Earnest @  30.7.2010,  10:51 Найти цитируемый пост)
Все члены должны инициализироваться в конструкторе. (...) если член класса имеет конструктор по-умолчанию, то упоминать его не стоит, это только засоряет код. 

вы сами себе противоречите
PM MAIL   Вверх
Earnest
Дата 30.7.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Почему же? Я ведь не написала - инициализироваться явно. Просто "инициализироваться". 
Собственно, речь может идти в основном о встроенных типах, которые по-умолчанию не инициализируются. 


--------------------
...
PM   Вверх
boostcoder
Дата 30.7.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Fazil6 @  30.7.2010,  09:37 Найти цитируемый пост)
а что, есть аргументы против? 

да. к примеру:
Цитата

а зачем? все равно конструктор по умолчанию есть.



Цитата(mrbrooks @  30.7.2010,  10:07 Найти цитируемый пост)
честно говоря не совсем ясна проблема. в чем соль то ТС? что мешает жить?

а нет проблемы.
просто меня часто критикуют коллеги за придирчивость к коду. вот сегодня с утра спорили об этом smile 


Цитата(Earnest @  30.7.2010,  13:12 Найти цитируемый пост)
Собственно, речь может идти в основном о встроенных типах

с этим все понятно.
но спор возник из-за переменных классового типа.
PM WWW   Вверх
Abyx
Дата 30.7.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Цитата(boostcoder @  30.7.2010,  10:55 Найти цитируемый пост)
Цитата(Abyx @  30.7.2010,  09:49 Найти цитируемый пост)
зачем спрашивать одно и то же на разных форумах %)

пример?

http://wasm.ru/forum/viewtopic.php?id=38086

странно видеть темы про инициализацию членов класса каждые два дня smile
PM MAIL   Вверх
Earnest
Дата 30.7.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(boostcoder @  30.7.2010,  14:32 Найти цитируемый пост)
но спор возник из-за переменных классового типа. 


В смысле, инициализировать ли явно члены, имеющие нормальные конструкторы по-умолчанию? Тогда я просто не поняла, пардон. Считаю, что не надо. Код типа:
CMyCompounClass::CMyCompoundClass():
   m_FirstMember (CFirstMember()),
   m_SecondMember (CSecondMember()),
   ...

смотрится на редкость уродливо. И никакой новой информации не сообщает. Ну есть у члена конструктор по-умолчанию. Так если бы его не было, компилятор орал бы как резаный.




--------------------
...
PM   Вверх
boostcoder
Дата 30.7.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Abyx @ 30.7.2010,  13:47)
Цитата(boostcoder @  30.7.2010,  10:55 Найти цитируемый пост)
Цитата(Abyx @  30.7.2010,  09:49 Найти цитируемый пост)
зачем спрашивать одно и то же на разных форумах %)

пример?

http://wasm.ru/forum/viewtopic.php?id=38086

странно видеть темы про инициализацию членов класса каждые два дня smile

я на том форуме не реган. так что хз о чем вы.

Добавлено @ 13:54
Earnest, какой-то не правильный у вас пример.
полагаю так:
Код

CMyCompounClass::CMyCompoundClass():
   m_FirstMember(),
   m_SecondMember(),
   ...



Цитата(Earnest @  30.7.2010,  13:47 Найти цитируемый пост)
И никакой новой информации не сообщает.

по моему наоборот.

Это сообщение отредактировал(а) boostcoder - 30.7.2010, 14:14
PM WWW   Вверх
mes
Дата 30.7.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Earnest @  30.7.2010,  12:47 Найти цитируемый пост)
m_FirstMember (CFirstMember()),

имхо имелось ввиду чуть _проще_:  m_FirstMember (), 

 smile

Добавлено @ 13:58
boostcoder, имхо  писать нужно минимум, но так чтоб был ясен смысл происходящего..
Если в конкретном случае необходимо явно указать, то указывайте, иначе поберегите клавиатуру smile




Это сообщение отредактировал(а) mes - 30.7.2010, 13:58


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 30.7.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



мнение большинства понятно. всем спасибо.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.