Копирующая инициализация

Рейтинг: 0Ответов: 1Опубликовано: 07.01.2023
class A {
    int _x;
public:
    A(int x) : _x(x) {}

};

int main()
{
    A s = 2; // вот она
}

Я не понимаю как это работает? Так как копирующая инициализация инициализирует объект из другого объекта, компилятор видит литерал int и приводит к типу A, то есть в теории должен вызваться конструктор для создания анонимного объекта, что бы потом вызвать конструктор копирования и инициализировать объект s анонимным объектом? Получается что это будет выглядеть так: A s = A(2);?

На практике компилятор это все оптимизирует будет вызван один конструктор. Получается если ход мыслей верный, то по этой причине копирующая инициализация носит такое название?

Ответы

Ответов пока нет.