Как правильно инициализировать свойство класса, представляющее собой класс? C++

Есть собственный класс Terminal. Его свойство window - это переменная типа Window:

class Terminal:
{
private:
    Window window;
public:
    Terminal(int x, int y);
}

Как правильно объявить и инициализировать ее в конструкторе? Ведь она уже объявлена. Попытался сделать через прямую инициализацию:

Terminal::Terminal(int x, int y) {
    window(x, y);
}

Выдало ошибку. Как вариант - использовать копирующую инициализацию:

window = Window(x, y)

Но я читал, что использование копирующей инициализации для объектов (особенно тяжелых) - плохо. Как правильно провести инициализацию в таком случае? Нужно ли применять список инициализаторов или это неправильный подход?


Ответы (1 шт):

Автор решения: Harry

Вот так:

Terminal::Terminal(int x, int y):window(x, y)
{
}

Учтите - в каком порядке бы вы их (инициализаторы) не записали, порядок инициализации - базовые конструкторы, а затем члены в порядке появления их в объявлении класса.

→ Ссылка