Advertisement
Guest User

Untitled

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