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);
}
{
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)
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 →