C-Programmierung

Ausgabe-Operator Beispiel

Ausgabe-Operator (<<) | | Ausgabe-Operator Beispiel mit OpenCV

Der Ausgabe-Operator kann wie jeder Operator auch für eigene Datentypen implementiert (d.h. überladen) werden kann, z.B. für komplexe Zahlen:

class Complex
{
   public:

   Complex(double r=0.0,double i=0.0) {re=r; im=i;}
   ~Complex() {}

   Complex                        // returned object is not const
   operator + (const Complex &b)            // parameter is const
   const   // method is declared const (it does not alter object)
   {
      return(Complex(re+b.re, im+b.im));
   }

   friend ostream& operator << (ostream& out, Complex x);

   private:

   double re,im;
};

ostream& operator << (ostream& out, Complex x)
{
   out << "(" << x.re << "," << x.im << ")";
   return(out);
}

Damit läßt sich die folgende Ausgabe erzielen:

#include <iostream>
using namespace std;

Complex a(0,1), b(1,0);
cout << a+b << endl;

Ausgabe: (1,1)

Q Wieso muss der <<-Operator als “friend” deklariert werden?

Da der Operator kein “Member” ist und damit keinen Zugriff auf “private” oder “protected” Daten hätte.

Ausgabe-Operator (<<) | | Ausgabe-Operator Beispiel mit OpenCV

Options: