Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

Почему лучше инициализировать объекты класса во время инициализации конструктора? - C++

20.01.2010, 15:50. Просмотров 981. Ответов 2
Метки нет (Все метки)

Имеется класс Rnd:

C++
1
2
3
4
5
6
7
class Rnd
{
    public:
        Rnd::Rnd(int x);
    private:
        int val;
};
Чем эта запись:

C++
1
2
3
Rnd::Rnd(int x):
    val(x)
{}
Лучше чем эта:

C++
1
Rnd::Rnd(int x) {   val=x;  }
Я не вижу никакой разницы, однако товарищ Страуструп утверждает, что первая запись лучше
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 15:50     Почему лучше инициализировать объекты класса во время инициализации конструктора?
Посмотрите здесь:

C++ Builder Можно ли объявлять в описании одного класса объекты другого класса
C++ Объекты. Как правильно инициализировать и удалить перемнные
Список инициализации конструктора C++
C++ Инициализация в теле конструктора или в списке инициализации.
Параметр конструктора класса нигде не задействован, но его отсутствие влияет на компиляцию, почему так? C++
Visual C++ Где правильно объявлять и инициализировать объекты/ MFC
Конструктор по умолчанию вызывается после конструктора инициализации C++
C++ Список инициализации конструктора
C++ Почему после конструктора первого класса стоит двоеточие и имя переменной, а не инициализация?
Инициализация в теле конструктора или в списке инициализации, есть ли разница в сгенерированном коде? C++
Используйте объект orange типа Tfruit для инициализации объекта grapefruit с помощью конструктора копирования C++
Реализовать класс «Проект» и создать объекты данного класса с разными способами инициализации C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
20.01.2010, 15:54     Почему лучше инициализировать объекты класса во время инициализации конструктора? #2
Я читал недавно про это - не создается лишней копии для x
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
20.01.2010, 16:30     Почему лучше инициализировать объекты класса во время инициализации конструктора? #3
Если x у тебя - сложный объект с нетривиальным конструктором, то разницу ты почувствуешь - во втором варианте сначала будет вызван конструктор по умолчанию, а только потом оператор= для объекта x. Это могут оказаться "дорогие" по времени операции. В первом же случае будет вызван только нужный конструктор для объекта x.
Yandex
Объявления
20.01.2010, 16:30     Почему лучше инициализировать объекты класса во время инициализации конструктора?
Ответ Создать тему
Опции темы

Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru