<metanoindex/>
Returns the result of a boolean operation.
| Operator name
|
Syntax
|
Overloadable
|
Prototype examples (for class T)
|
| Inside class definition
|
Outside class definition
|
| negation
|
not a
!a
|
Yes
|
bool T::operator!() const;
|
bool operator!(const T &a);
|
| AND
|
a and b
a && b
|
Yes
|
bool T::operator&&(const T2 &b) const;
|
bool operator&&(const T &a, const T2 &b);
|
| inclusive OR
|
a or b
a || b
|
Yes
|
bool T::operator||(const T2 &b) const;
|
bool operator||(const T &a, const T2 &b);
|
'Notes' Original: Notes
The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
- The keyword-like forms (
and,or,not) and the symbol-like forms (&&,||,!) can be used interchangeably (See alternative Darstellungen)
Alle eingebauten Operatoren Rückkehr bool, und die meisten benutzerdefinierten Überlastungen auch bool so dass die benutzerdefinierten Operatoren in der gleichen Weise wie die built-ins verwendet werden zurückkehren. Jedoch in einer benutzerdefinierten Operator Überlast kann jeder Typ als Rückkehr-Typ (einschließlich void) verwendet werden . Original: All built-in operators return bool, and most user-defined overloads also return bool so that the user-defined operators can be used in the same manner as the built-ins. However, in a user-defined operator overload, any type can be used as return type (including void). The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
- Builtin operators
&& and || perform short-circuit evaluation (do not evaluate the second operand if the result is known after evaluating the first), but overloaded operators behave like regular function calls and always evaluate both operands
|
Erklärung
The logical operators apply logic functions (NOT, AND, and inclusive OR) to boolean arguments (or types contextually-convertible to bool), with a boolean result. Unlike the bitwise logic operators, these operators (in their built-in form) do not evaluate the second operand if the result is known after evaluating the first.
Builtin operators
The following built-in function signatures participate in overload resolution:
<tbody>
</tbody>
| | |
| bool operator!(bool)
|
|
|
| | |
| bool operator&&(bool, bool)
|
|
|
| | |
| bool operator||(bool, bool)
|
|
|
| | |
If the operand is not bool, it is converted to bool using contextual conversion to bool: it is only well-formed if the declaration bool t(arg) is well-formed, for some invented temporary t.
For the built-in logical NOT operator, the result is true if the operand is false. Otherwise, the result is false.
For the built-in logical AND operator, the result is true if both operands are true. Otherwise, the result is false. If the first operand is false, the second operand is not evaluated.
For the built-in logical OR operator, the result is true if either the first or the second operand (or both) is true. If the firstoperand is true, the second operand is not evaluated.
Results
a
|
true
|
false
|
!a
|
false
|
true
|
and
|
a
|
true
|
false
|
b
|
true
|
true
|
false
|
false
|
false
|
false
|
or
|
a
|
true
|
false
|
b
|
true
|
true
|
true
|
false
|
true
|
false
|
Beispiel
#include <iostream>
#include <string>
int main()
{
int n = 2;
int* p = &n;
// pointers are convertible to bool
if( p && *p == 2 // "*p" is safe to use after "p &&"
|| !p && n != 2 ) // || has lower precedence than &&
std::cout << "true\n";
// streams are also convertible to bool
std::cout << "Enter 'quit' to quit.\n";
for(std::string line; std::cout << "> "
&& std::getline(std::cin, line)
&& line != "quit"; )
;
}
Output:
true
Enter 'quit' to quit.
> test
> quit
Standard-Bibliothek
Because the short-circuiting properties of operator&& and operator|| do not apply to overloads, and because types with boolean semantics are uncommon, only two standard library classes overload these operators:
|
|
|
|
gilt eine unäre arithmetische Operator für jedes Element des valarray Original: applies a unary arithmetic operator to each element of the valarray The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion of std::valarray)
|
|
|
|
|
gilt Binäroperatoren auf jedes Element von zwei valarrays oder ein valarray und einem Wert Original: applies binary operators to each element of two valarrays, or a valarray and a value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (Funktions-Template)
|
|
|
|
|
prüft, ob ein Fehler aufgetreten ist (Synonym fail()) Original: checks if an error has occurred (synonym of fail()) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion of std::basic_ios) [edit]
|
Siehe auch
Operator Vorrang
| Common operators
|
| Zuweisungen
|
incrementNJdecrement
|
Arithmetik
|
logisch
|
Vergleich
|
memberNJaccess
|
andererseits
|
|
a = b a = rvalue a += b a -= b a *= b a /= b a %= b a &= b a |= b a ^= b a <<= b a >>= b
|
++a --a a++ a--
|
+a -a a + b a - b a * b a / b a % b ~a a & b a | b a ^ b a << b a >> b
|
!a a && b a || b
|
a == b a != b a < b a > b a <= b a >= b
|
a[b] *a &a a->b a.b a->*b a.*b
|
a(...) a, b (type) a ? :
|
| Special operators
|
static_cast wandelt einem Typ in einen anderen kompatiblen Typ Original: static_cast converts one type to another compatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
dynamic_cast wandelt virtuellen Basisklasse abgeleitet class Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
const_cast wandelt Typ kompatiblen Typ mit unterschiedlichen cv qualifiers Original: const_cast converts type to compatible type with different cv qualifiers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
reinterpret_cast wandelt Typ inkompatibel type Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
new ordnet memory Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
delete freigibt memory Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
sizeof fragt die Größe eines type Original: sizeof queries the size of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
sizeof... fragt die Größe eines Parameter Pack (seit C++11)Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
typeid fragt die Typinformationen eines type Original: typeid queries the type information of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
noexcept prüft, ob ein Ausdruck eine Ausnahme (seit C++11) werfen kann Original: noexcept checks if an expression can throw an exception (seit C++11) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
alignof Abfragen Ausrichtungsanforderungen eines Typs (seit C++11)Original: alignof queries alignment requirements of a type (seit C++11) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions.
|