if (dies && das) frage;
-
Wenn func() nicht grad ne Exception wirft, müsste der Vergleich IMO schon durchgeführt werden.
-
Und ihr denkt auch an folgendes:
bool operator&& (const INTEGER &lhs, const INTEGER &rhs) { return (lhs.var && rhs.var); } class INTEGER { public: INTEGER (int i = 0) : var(i) {} friend bool operator&& (const INTEGER &lhs, const INTEGER &rhs); private: int var; }; INTEGER CloseDB (DBHANDLE *hDB) { CloseDBConnection (hDB); return INTEGER (1); // Erfolgreich beendet } INTEGER GetStatus () { // Prüfen ob noch etwas getan werden muss return INTEGER (0); // Es gibt noch etwas zu tun } void DoUpdate (DBHANDLE &hDB); // Aktualisiert Datensätze DBHANDLE * OpenDB (); // Stellt eine DB Verbindung her int main () { DBHANDLE *hDB = OpenDB (); DoUpdate (hDB); if (GetStatus () && CloseDB (hDB)); return 0; }
Edit:
Typo
-
IMO gibt es keinen Grund, operator&& zu überladen. Davon abgesehen, ist das in dem Fall wohl besser, den operator '==' zu nennen!
-
SirLant schrieb:
Und ihr denkt auch an folgendes:
Nein. Warum auch? Darum kümmert sich die Sittenpolizei
Ne, mal im ernst: man überlädt den op&& einfach nicht. Schongarnicht so unlogisch.da tut es ein
if(foo() == bar())
doch auch, und ist viel logischer.
-
Es geht hier nicht um den Sinn, sondern um das Verhalten der überladenen Funktion,
und wofür den Operator == verwenden?
Der Benutzer der DB-API, geht hier ja irrtümlicherweise von einer anderen Funktionsweise
des operators&& aus.
Ich wollte nur darauf hinweisen.Edit:
Shade, dass man den operator&& und operator|| aus diesem Grund nicht überladen soll,
ist dir und mir bekannt, aber dem Entwickler der DB-API hat es trotzdem gemacht.
Der Benutzer verwendet den operator&& ganz normal wie bei den built-ins auch, da
er ja nicht weiß, dass dieser sich anderst verhält.
Und darauf wollt ich hinweisen.
-
SirLant schrieb:
Es geht hier nicht um den Sinn, sondern um das Verhalten der überladenen Funktion,
Man macht sowas aber nicht.
und wofür den Operator == verwenden?
op&& wurde wie op== implementiert, nur falsch. Sprich der Compiler müsste nen Fehler liefern - op&& muss non member sein.
Der Benutzer der DB-API, geht hier ja irrtümlicherweise von einer anderen Funktionsweise
des operators&& aus.Exakt. Deswegen ist dieser op&& Schrott.
Ich schreib ja auch nicht ne Funktion addiere die 2 Werte mal PI rechnet, das ergebnis halbiert und dann ne Rakte auf den Mond schiesst.Ich wollte nur darauf hinweisen.
ist aber n ziemlich doofes beispiel.
-
Stimmt, das ist nen Fehler, liegt an der Müdigkeit
Das Beispiel ist doof, weil man sowas normal nicht macht, aber man soll auch kein
iostream.h verwenden und viele tun es trotzdem
-
SirLant schrieb:
Shade, dass man den operator&& und operator|| aus diesem Grund nicht überladen soll,
ist dir und mir bekannt, aber dem Entwickler der DB-API hat es trotzdem gemacht.
Der Benutzer verwendet den operator&& ganz normal wie bei den built-ins auch, da
er ja nicht weiß, dass dieser sich anderst verhält.
Und darauf wollt ich hinweisen.mal ehrlich: so eine schweinerei macht jemand wirklich? den sollte man auf nen programmier kurs schicken...
-
iostream.h ist einfach nur suboptimal, den op&& derart zu missbrauchen ist schon fast misshandlung.
-
Shade Of Mine schrieb:
SirLant schrieb:
Shade, dass man den operator&& und operator|| aus diesem Grund nicht überladen soll,
ist dir und mir bekannt, aber dem Entwickler der DB-API hat es trotzdem gemacht.
Der Benutzer verwendet den operator&& ganz normal wie bei den built-ins auch, da
er ja nicht weiß, dass dieser sich anderst verhält.
Und darauf wollt ich hinweisen.mal ehrlich: so eine schweinerei macht jemand wirklich? den sollte man auf nen programmier kurs schicken...
Gerade den Lehrern die Programmierkurse an ner VHS geben würd ich das zutrauen,
sind ja die typischen void main und iostream.h Benutzer, wie ich seit meiner
Registrierung feststellen musste