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

C++

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

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

20.01.2010, 15:50. Просмотров 988. Ответов 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++ Почему в списке инициализации конструктора дочернего класса нельзя вызывать конструктор родительского через его пространство имён?
Реализовать класс «Проект» и создать объекты данного класса с разными способами инициализации C++
C++ Почему после конструктора первого класса стоит двоеточие и имя переменной, а не инициализация?
Параметр конструктора класса нигде не задействован, но его отсутствие влияет на компиляцию, почему так? C++
Список инициализации конструктора C++
C++ Список инициализации конструктора
Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). C++
C++ Обработка исключений в списке инициализации конструктора
C++ Инициализация в теле конструктора или в списке инициализации.
Конструктор по умолчанию вызывается после конструктора инициализации C++
Как выделить память объекту при инициализации конструктора? C++
Visual C++ Где правильно объявлять и инициализировать объекты/ MFC

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

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

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