Koliko puta se u ovom kodu poziva copy konstruktor? Riječ je o klasi.
Code:
Widget f(Widget u)
{ Widget v(u);
Widget w=v;
return w;
}
main()
{ Widget x;
Widget y=f(f(x));
}
Widget f(Widget u)
{ Widget v(u);
Widget w=v;
return w;
}
main()
{ Widget x;
Widget y=f(f(x));
}
Odgovor: 7 puta. Ja sam odgovorio: 4 puta. Meni ustvari nije do kraja proces koji se odvija ovdje. Ja sam shvatio da:
prvo se deklariše i definiše funkcija koja prima i vraća klasu tipa Widget. U funkciji se kreira još jedna klasa tipa Widget i imena v koju se kopira sadržaj u, što je prvo kopiranje. Onda se kreira još jedna klasa tipa Widget i imena w u koju se kopira sadržaj v, što je drugo kopiranje. Funkcija se u glavnom programu poziva dva puta, dakle ukupno imamo 4 kopiranja, odnosno poziva copy konstruktora.
[Ovu poruku je menjao R A V E N dana 18.06.2009. u 14:36 GMT+1]