#include <iostream>
using namespace std;
struct A
{
explicit operator bool() const
{
return true;
}
operator int()
{
return 0;
}
};
int main()
{
if (A())
{
cout << "true" << endl;
}
else
{
cout << "false" << endl;
}
}
Meine Erwartung war, dass A()
würde kontextuell zu bool
meine operator bool()
mit umgewandelt werden und daher true
drucken.Warum wird mein "expliziter Operator bool()" nicht aufgerufen?
Die Ausgabe ist jedoch false
, was zeigt, dass stattdessen operator int()
aufgerufen wurde.
Warum wird mein explicit operator bool
nicht wie erwartet aufgerufen?
Ich erwarte, dass die Ausgabe wahr ist. Die tatsächliche Ausgabe ist jedoch "falsch" anstatt "wahr"! – xmllmx
Bitte klären Sie Ihre Frage. – juanchopanza
@xmllmx Sie haben nichts ausgearbeitet. –