W jakich sytuacjach jest wywoływany konstruktor kopii C ++?

Znam następujące sytuacje w c ++, w których wywoływany byłby konstruktor kopii:

kiedy istniejącemu obiektowi przypisany jest obiekt własnej klasy

MyClass A,B;
A = new MyClass();
B=A; //copy constructor called 

jeśli funkcja otrzymuje jako argument, przekazywana przez wartość, obiekt klasy

void foo(MyClass a);
foo(a); //copy constructor invoked

kiedy funkcja zwraca (według wartości) obiekt klasy

MyClass foo ()
   {
      MyClass temp;
      ....
      return temp; //copy constructor called
   } 

Prosimy o poprawienie wszelkich błędów, które popełniłem; ale jestem bardziej ciekawy, czy są jakieś inne sytuacje, w których wywoływany jest konstruktor kopii.

questionAnswers(7)

yourAnswerToTheQuestion