Копировать конструктор и присваивание это две разные вещи.'t4 = t3;'
- это присвоение, а не инициализация.Добавьте
Point& operator = (const Point &t) { cout << "\nAssignment called"; return *this;}
в свой класс, и вы увидите, что они вызываются.
Отладка управления Xcode происходит напрямую из точки t4;до конца кода.
Это потому, что нечего отлаживать в этой строке кода.Добавьте приведенный выше код, и вы также сможете увидеть поток управления через эти строки.
Далее, как предлагает @Craig Young
Любой приличный оптимизатор уберет эти 3 строкипотому что они имеют нулевой эффект от общего поведения.Сделайте что-нибудь с t4
после каждого назначения (например, Give Point члену x
и вызову std::cout << t4.x;
), тогда назначение не может быть так тривиально удалено оптимизатором.И вы увидите поток управления через эти линии.