002
04.08.2003, 17:58 Uhr
0xdeadbeef
Gott (Operator)
|
Operatorüberladung ist das Zauberwort. Nimm zum Beispiel das hier als einfaches beispiel
C++: |
//myclass.h #include <string>
class my_class { protected: std::string catstr; public: std::string get_string();
//Jetzt darf der unten deklarierte operator<< auf private- und protected- //Elemente von my_class zugreifen friend my_class &operator<<(my_class&, std::string); };
//Deklaration des Operators. my_class &operator<<(my_class &, std::string);
|
C++: |
//myclass.cpp #include "myclass.h"
std::string my_class::get_string() { return catstr; }
//Implementation des Operators. Wichtig ist, dass die Instanz von myclass, //die als Referenz übergeben wurde, auch als Referenz zurückgegeben wird. //Dadurch kann man erst solche Dinge wie m << "bla" << "bli" << "blu"; machen my_class &operator<<(my_class &mc, std::string str) { mc.catstr += str; return mc; }
|
C++: |
//main.cpp #include <string> #include "myclass.h"
int main() { my_class m; //Aufruf des Operators hier. Das Argument links von << ist der erste //Parameter der Operator-Funktion von oben. m << "Hello" << ", " << "World" << "!"; std::cout << m.get_string() << std::endl; }
|
Alles klar? -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |