Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sd-ca:2014:laboratoare:laborator-02 [2015/03/11 20:36]
andrei.vasiliu2211
sd-ca:2014:laboratoare:laborator-02 [2015/03/11 20:38] (current)
andrei.vasiliu2211
Line 387: Line 387:
 } }
  
-</​code>​ 
- 
-==== Copy-constructor ==== 
- 
-Reprezintă un tip de constructor special care se folosește când se dorește/​este necesară o copie a unui obiect existent. Dacă nu este declarat, se va genera unul default de către compilator. 
- 
-Poate avea unul din următoarele prototipuri 
- 
-   * MyClass(const MyClass&​ obj); 
-   * MyClass(MyClass&​ obj); 
- 
-=== Când se apelează? === 
- 
-1) Apel explicit 
- 
-<code c++ explicit_copy_constructor_call.cpp>​ 
-MyClass m; 
-MyClass x = MyClass(m); /* apel explicit al copy-constructor-ului */ 
-</​code>​ 
- 
-2) Transfer prin valoare ca argument într-o funcție 
- 
-<code c++ call_by_value.cpp>​ 
-void f(MyClass obj); 
-... 
-MyClass o; 
-f(o); /* se apelează copy-constructor */ 
-</​code>​ 
- 
-3) Transfer prin valoare ca return al unei funcții 
- 
-<code ++ return_by_value.cpp>​ 
-MyClass f() 
-{ 
-    MyClass a; 
-    return a; /* se apelează copy-constructor */ 
-} 
-</​code>​ 
- 
-4) La inițializarea unei variabile declarate pe aceeași linie 
- 
-<code c++ init.cpp>​ 
-MyClass m; 
-MyClass x = m; /* se apelează copy-constructor */ 
 </​code>​ </​code>​
  
sd-ca/2014/laboratoare/laborator-02.1426098983.txt.gz · Last modified: 2015/03/11 20:36 by andrei.vasiliu2211
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0