如何调用bool函数

Ger*_*rri 1 c++ function

我没有看到任何解决我的特定代码问题的东西.

我在课堂上有一个bool函数; bool函数命名为:

bool Triplet::operator ==(const Triplet& operand)const {
    if( (data[0] == operand.data[0]) &&
            (data[1] == operand.data[1]) &&
            (data[2] == operand.data[2]))
        return true; 
        ...
Run Code Online (Sandbox Code Playgroud)

而我正试图在Main中调用它,但只是在调用正确的时候遇到问题.显然,如果我在措辞中遗漏了任何东西,它会给出一个错误,我只有很少的语句,如果我尝试使用函数的整个措辞,我会得到错误,我需要一个分号,但我已经有了在通话结束时分号,所以我知道别的东西是错的,我根本无法弄清楚出了什么问题!任何帮助,将不胜感激!

提前致谢.

Jam*_*lis 11

你可以使用它来调用它==(这就是运算符重载的作用;它会重载运算符的含义):

Triplet a;
Triplet b;

if (a == b) //< calls your operator==
Run Code Online (Sandbox Code Playgroud)

您也可以使用函数调用语法调用它:

if (a.operator==(b)) //< also calls your operator==
Run Code Online (Sandbox Code Playgroud)

但你通常不想或不需要这样做.

您可能需要这样做的一个案例是,如果由于某种原因,您有一个操作员模板,其模板参数无法从参数中推断出来(这很少见operator==,但我已经看过operator[]以前用过的).


Sim*_*han 8

这是一个C++运算符重载,它的设计使它可以改变普通运算符的行为:

Triplet a, b;
if (a == b) // calls Triplet::operator==()
Run Code Online (Sandbox Code Playgroud)

如果您真的想要,可以通过名称呼叫运营商:

if (a.operator==(b))
Run Code Online (Sandbox Code Playgroud)

  • 除了它是'a.operator ==(b)`. (7认同)