Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.75 KB | None | 0 0
  1. /*Beispielprogramm: Zuweisungsoperator.cpp*/
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class B {                      // Basisklasse
  6. public:
  7.   int x;
  8.   B(int _x): x(_x) {}
  9.   B& operator= (const B& b) { // Zuweisungsoperator der Basisklasse
  10.     x=b.x;
  11.     cout << "B::operator=(const B&)" << endl;
  12.     return *this;
  13.   }
  14.   void info() { cout << x; }
  15. };
  16.  
  17. class U: public B {            // Unterklasse
  18. public:
  19.   int y;
  20.   U(int _x, int _y): B(_x), y(_y) {}
  21.   U& operator= (const U& u) { // Zuweisungsoperator der Unterklasse
  22.     B::operator=(u);          // !!! Aufruf des Zuweisungsoperators der !!!
  23.                               // !!! Basisklasse muss explizit erfolgen !!!
  24.     y=u.y;                    // Zuweisung U-spezifischer Komponenten
  25.     cout << "U::operator=(const U&)" << endl;
  26.     return *this;
  27.   }
  28.   void info() { B::info(); cout << "," << y; }
  29. };
  30.  
  31. int main() {
  32.   B a(1),b(2);
  33.   U u(3,4),v(5,6);
  34.   //Zuweisung in der Basisklasse
  35.   cout << "a=";a.info();cout << endl;
  36.   cout << "b=";b.info();cout << endl;
  37.   cout << "Zuweisung a=b in B" << endl;
  38.   a=b;
  39.   cout << "Ergebnis: a=";a.info();cout << endl;
  40.   cin.get();
  41.   //Zuweisung in der abgeleiteten Klasse
  42.   cout << "u=";u.info();cout << endl;
  43.   cout << "v=";v.info();cout << endl;
  44.   cout << "Zuweisung u=v in U" << endl;
  45.   u=v;
  46.   cout << "Ergebnis: u=";u.info();cout << endl;
  47.   cin.get();
  48.  
  49.   //Zuweisung nur der geerbten Komponenten:
  50.   //Methode B::operator=(const B&) akzeptiert auch U-Objekte
  51.   cout <<"Zuweisung b=u:" << endl;
  52.   b=u;
  53.   cout << "Ergebnis: b=";b.info();cout << endl;
  54.   //Zuweisung der Form u=b sinnlos, da
  55.   //1. u Daten (y) enthaelt, die durch b nicht zugewiesen werden koennen
  56.   //2. Aufruf von U::operator=(const U&) ein U-Objekt erwartet
  57.   return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement