Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Коструктор:


Автор: HMLd 29.7.2006, 12:21
В чём различие (если оно есть, конечно):
Код

SomeClass::SomeClass (int value): itsMember (value) {}

и 
Код

SomeClass::SomeClass (int value) {itsMember = value;}

Что быстрее? Что предпочтительнее? 

Автор: Daevaorn 29.7.2006, 13:12
HMLd, 
Цитата(HMLd @  29.7.2006,  13:21 Найти цитируемый пост)
Что быстрее? Что предпочтительнее?  

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

Автор: DeadSoul 29.7.2006, 14:50
Цитата(Daevaorn @  29.7.2006,  13:12 Найти цитируемый пост)
Первый вариант предпочтителен почти всегда!  

Не почти всегда, а всегда.

Код

SomeClass::SomeClass (int value): 
  itsMember (value) // <-  вызов конструктора для itsMember 
{
}

SomeClass::SomeClass (int value)
// <- тут неявный вызов контруктора для itsMember 
 {
itsMember = value;// <- оператор= для itsMember 
}
 

Автор: HMLd 29.7.2006, 15:20
Пасибки...=) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)