Я знаю следующие ситуации в С++, где будет вызываться конструктор копирования:
-
когда существующему объекту присваивается объект собственного класса
MyClass A,B; A = new MyClass(); B=A; //copy constructor called
-
если функции получают в качестве аргумента, переданного по значению, объект класса
void foo(MyClass a); foo(a); //copy constructor invoked
-
когда функция возвращает (по значению) объект класса
MyClass foo () { MyClass temp; .... return temp; //copy constructor called }
Пожалуйста, не стесняйтесь исправить любые ошибки, которые я сделал; но мне более любопытно, есть ли другие ситуации, в которых вызывается конструктор копирования.