Differences

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

Link to this comparison view

poo-is-ab:laboratoare:10 [2025/12/03 22:34]
razvan.cristea0106 [Vector de obiecte neomogene]
poo-is-ab:laboratoare:10 [2025/12/04 09:00] (current)
razvan.cristea0106 [Vector de obiecte neomogene]
Line 47: Line 47:
 </​code>​ </​code>​
  
-Așa cum am discutat în cadrul ​laboratorul ​anterior, atunci când declarăm o metodă ca fiind **virtual pură**, clasa care o conține devine automat o **clasă abstractă**. Totuși, faptul că o **funcție membră** este marcată drept virtual pură **nu ne împiedică deloc** să îi oferim o implementare în clasa unde a fost declarată. Această marcare, exprimată prin sintaxa **''​= 0''​**,​ are rolul de a face clasa **neinstanțiabilă**,​ **nu de a interzice existența unei definiții**. Cu alte cuvinte, putem avea în continuare un **comportament de bază** pentru metoda respectivă,​ chiar dacă **obligăm subclasele** să o **suprascrie**.+<​note>​Așa cum am discutat în cadrul ​laboratorului ​anterior, atunci când declarăm o metodă ca fiind **virtual pură**, clasa care o conține devine automat o **clasă abstractă**. Totuși, faptul că o **funcție membră** este marcată drept virtual pură **nu ne împiedică deloc** să îi oferim o implementare în clasa unde a fost declarată. Această marcare, exprimată prin sintaxa **''​= 0''​**,​ are rolul de a face clasa **neinstanțiabilă**,​ **nu de a interzice existența unei definiții**. Cu alte cuvinte, putem avea în continuare un **comportament de bază** pentru metoda respectivă,​ chiar dacă **obligăm subclasele** să o **suprascrie**.</​note>​
  
 În cele ce urmează vom exemplifica printr-o secvență de cod ceea ce am menționat anterior. În cele ce urmează vom exemplifica printr-o secvență de cod ceea ce am menționat anterior.
Line 58: Line 58:
 public: public:
  
-    // Metoda virtual puraclasa devine abstracta +    // Metoda ​este marcata ca fiind virtual pura -> clasa devine abstracta 
-    // Totusi ii putem oferim ​o implementare+    // Totusi ii putem oferi o implementare
     virtual void f() = 0;     virtual void f() = 0;
 }; };
  
 // Implementarea metodei virtual pure trebuie sa fie in afara clasei, // Implementarea metodei virtual pure trebuie sa fie in afara clasei,
-// deoarece limbajul C++ nu permite definirea +// deoarece limbajul C++ nu permite definirea unei metode virtual pure direct in interiorul clasei
-// unei metode virtual pure direct in interiorul clasei.+
  void A::f()  void A::f()
 { {
Line 75: Line 74:
 public: public:
  
-    // B suprascrie metoda f si foloseste implementarea din baza+    // B suprascrie metoda f si foloseste implementarea din clasa de baza
     void f() override     void f() override
     {     {
Line 174: Line 173:
 </​code>​ </​code>​
  
-Iar implementările metodelor celor două clase se pot observa în blocurile de mai jos.+Iar implementările metodelor celor două clase se pot observa în blocurile ​de cod de mai jos.
  
 <code cpp> <code cpp>
poo-is-ab/laboratoare/10.1764794043.txt.gz · Last modified: 2025/12/03 22:34 by razvan.cristea0106
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