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.