Hmm, so wie du das geschrieben hast, vergleichst du zwei Zeiger miteinander. Das ist erlaubt, aber vermutlich nicht das, was du machen willst.
Sonst darfst du auch alle Objekte vergleichen, aber bei denen mit dynamisch angeforderten Zeigern drin (oder etwas allgemeiner: dynamischen Elementen), wird ohne selbst definierten Vergleich wieder nicht das gewünschte Ergebnis rauskommen.
Ein kleines Beispiel:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream>
int *p1 = new int (5);
int *p2 = new int (5);
int *p3 = p1;
int main ()
{
if ( p1 == p2)
std::cerr << "Zeiger zeigen auf verschiedenen Speicher!" << std::endl;
if (*p1 == *p2)
std::cerr << "Gezeigte Elemente sind gleich." << std::endl;
if ( p1 == p3)
std::cerr << "Zeiger zeigen auch den selben Speicher." << std::endl;
return 0;
}
|
Die Quintessenz: auch wenn zwei Zeiger auf verschiedenen Speicher zeigen, kann dort trotzdem ein Objekt stehen, das logisch gleich ist, und logische Gleichheit ist für den Operator == in der Regel gefragt.
Ein vergessener Operator = ist schlimm, weil der zu einem Absturz führt (es gibt Ausnahmen). Ein vergessener Operator == ist schlimm, weil er nicht Erwartungsgemäß funktioniert, und der Fehler dazu oft nur schwer zu finden ist.