Inheritance


Erweitern wir die Klasse Point des letzten Tutorials um Komplexe Zahlen halten zu können. Die reellen und imaginären Zahlen müssen als private integer Referenzen definiert werden, um als Koordinaten des Point Objektes zu dienen.

#include <iostream>
using namespace std;

class Point;
std::ostream& operator<<(std::ostream& out, const Point& c);

template<typename T>
void Swap(T &a, T &b) { T temp = a; a = b; b = temp; }

class Point {
public:
    int x, y;

    Point (int c1, int c2) { x = c1; y = c2;}
    Point& operator=(Point rhs) {
        x = rhs.x; y = rhs.y;
        return *this;
    }
};

class Complex : public Point {
  private: 
    int &real, &imag;
  public: 
    Complex(int r, int i) : Point (r, i), real (x), imag (y) 
    { cout << "Forming..." << *this; }

};

int main()
{

    Complex c1(15, 15), c2 (100, 100); 
    return 0;
}

std::ostream& operator<<(std::ostream& out, const Point& c)
{
  out<< "x:" << c.x << " ";
  out<< "y:" << c.y << "\n";
  return out;
}

Wir alle brauchen Freunde

Übung

Definiere 2 Complex Objekte. Verwende die Swap Funktion um die Complex Objekte als Point Typen zu vertauschen. Lösche das Code Fenster und nutze die Gelegenheit um alles noch einmal selbst zu schreiben.

Gib die vertauschten Objekte als Point Objekte aus. Gebe sie außerdem als Complex Objekte aus.


Copyright © learn-cpp.org. Read our Terms of Use and Privacy Policy