This shows you the differences between two versions of the page.
sd-ca:laboratoare:laborator-02 [2016/02/21 19:48] darius.neatu |
sd-ca:laboratoare:laborator-02 [2016/02/21 19:51] (current) radu.stochitoiu |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Obiective ===== | ===== Obiective ===== | ||
- | În urma parcurgerii acestui laborator studentul va: | + | În urma parcurgerii acestui articol studentul va: |
- | * învăța ce înseamnă o clasa | + | * învăța ce înseamnă o clasă |
* învăța ce înseamnă constructor / destructor | * învăța ce înseamnă constructor / destructor | ||
- | * afla funcționalitățile claselor/funcțiilor prietene | + | * afla funcționalitățile claselor / funcțiilor prietene |
* realiza supraîncărcarea operatorilor din C++ | * realiza supraîncărcarea operatorilor din C++ | ||
* înțelege conceptul de copy constructor | * înțelege conceptul de copy constructor | ||
Line 80: | Line 80: | ||
- | ====Compilare==== | ||
- | Sursele C++ se compilează folosind compilatorul **g++**. Acesta permite exact aceleași opțiuni de bază ca și **gcc**, compilatorul utilizat pentru sursele de C. | ||
- | |||
- | * Încercați să compilați și să rulați codul din cele 3 fișiere de mai sus. | ||
- | |||
- | <code bash> | ||
- | g++ complex.cc main.cc -o exemplu | ||
- | </code> | ||
- | Ce observați? | ||
- | |||
- | Înlocuiți acum keyword-ul //class// cu keyword-ul //struct// și compilați din nou. | ||
==== Specificatori de acces ==== | ==== Specificatori de acces ==== | ||
Line 305: | Line 294: | ||
===== Clase/metode prietene ===== | ===== Clase/metode prietene ===== | ||
- | Așa cum am văzut în primul laborator, fiecare membru al clasei poate avea 3 specificatori de acces: | + | Așa cum am văzut în primul articol, fiecare membru al clasei poate avea 3 specificatori de acces: |
* public | * public | ||
* private | * private | ||
Line 585: | Line 574: | ||
*[**2p**] Setati tipul de return a metodelor de tip getter astfel incat sa puteti modifica valorea intoarsa. | *[**2p**] Setati tipul de return a metodelor de tip getter astfel incat sa puteti modifica valorea intoarsa. | ||
*[**1p**] Arătați funcționalitatea prin adăugarea de cod în fișierul main.cpp. Rezolvați, dacă e cazul, toate erorile/leak-urile depistate de Valgrind. | *[**1p**] Arătați funcționalitatea prin adăugarea de cod în fișierul main.cpp. Rezolvați, dacă e cazul, toate erorile/leak-urile depistate de Valgrind. | ||
- | </hidden> | ||
*[**5p**] Clasa Complex - clasă ce implementează conceptul de număr complex | *[**5p**] Clasa Complex - clasă ce implementează conceptul de număr complex | ||
Line 602: | Line 590: | ||
*[**2p**] Alocați o instanță de tip MappingEntry local și dinamic (utilizând new / delete). | *[**2p**] Alocați o instanță de tip MappingEntry local și dinamic (utilizând new / delete). | ||
*[**1p**] Arătați funcționalitatea prin adăugarea de cod în fișierul main.cpp. Rezolvați, dacă e cazul, toate erorile/leak-urile depistate de Valgrind. | *[**1p**] Arătați funcționalitatea prin adăugarea de cod în fișierul main.cpp. Rezolvați, dacă e cazul, toate erorile/leak-urile depistate de Valgrind. | ||
- | <hidden> | + | |
*[**5p**] Clasa Punct2D - clasă ce implementează conceptul de punct în plan | *[**5p**] Clasa Punct2D - clasă ce implementează conceptul de punct în plan | ||
*[**2p**] Implementați și folosiți utilizând template-uri clasa Punct2D, adăugând constructor și destructor. | *[**2p**] Implementați și folosiți utilizând template-uri clasa Punct2D, adăugând constructor și destructor. | ||
Line 613: | Line 601: | ||
- | </hidden> | + | |
*[**5p**] Clasa Punct2D - clasă ce implementează conceptul de punct în plan | *[**5p**] Clasa Punct2D - clasă ce implementează conceptul de punct în plan | ||
Line 630: | Line 618: | ||
*[**1p**] Arătați funcționalitatea prin adăugarea de cod în fișierul main.cpp. Rezolvați, dacă e cazul, toate erorile/leak-urile depistate de Valgrind. | *[**1p**] Arătați funcționalitatea prin adăugarea de cod în fișierul main.cpp. Rezolvați, dacă e cazul, toate erorile/leak-urile depistate de Valgrind. | ||
- | <hidden> | + | |
===== Interviu ===== | ===== Interviu ===== | ||
- | Această secțiune nu este punctată și încearcă să vă facă o oarecare idee a tipurilor de întrebări pe care le puteți întâlni la un job interview (internship, part-time, full-time, etc.) din materia prezentată în cadrul laboratorului. | + | Această secțiune nu este punctată și încearcă să vă facă o oarecare idee a tipurilor de întrebări pe care le puteți întâlni la un job interview (internship, part-time, full-time, etc.) din materia prezentată în cadrul articolului. |
* Care este diferența între struct și class în C++? | * Care este diferența între struct și class în C++? |