无法在C ++中将布尔函数命名为“ xor()”

Tas*_*lis 0 c++ boolean function xor

我试图创建一个XOR运算符,但由于未知原因,我的编译器不接受bool xor()该函数,它也不允许我调用它或以任何可能的方式使用它。

我想指出的是,我正在学习一本书来学习C ++。具体地说,它是Herbert Schildt(第3版)的“从头开始学习C ++”。本书中引用了这段代码。

如果我将函数命名为bool xar()bool XOR(),我的代码就可以正常工作,但是由于我正在尝试学习C ++,所以我想对为什么会发生此错误有所了解。

#include <iostream>
using namespace std;

bool xor(bool a, bool b);

int main()
{
    bool q, p;
    cout << "Enter Q (0 or 1): ";
    cin >> q;
    cout << "Enter P (0 or 1): ";
    cin >> p;

    cout << "Q AND P: " << (q && p) << '\n';
    cout << "Q OR P: " << (q || p) << '\n';
    cout << "Q XOR P: " << xor(q, p) << "\n";
    cout << "nice";

    return 0;
}


bool xor(bool a, bool b)
{
    return (a || b) && !(a && b);
} ```

// The error message i receive is from the lines:
// ---------------------------
// bool xor(bool a, bool b);
// *expected an identifier*
// ---------------------------
// cout << "Q XOR P: " << xor(q, p) << "\n";
// *expected an expression*
// ---------------------------
// bool xor(bool a, bool b)
// *expected an identifier*
Run Code Online (Sandbox Code Playgroud)

Nat*_*ica 10

xor是关键字,不能在您的代码中用作名称。C ++提供了替代运算符表示形式,因此||您无需使用for或使用即可or。有一个xorfor,^因此您不能使用该名称。