C++ 理解布尔运算符==(参数1,参数2)

C++ 理解布尔运算符==(参数1,参数2),c++,operator-overloading,C++,Operator Overloading,bool运算符==(str\u数组a、str\u数组b) 其中str\u array是我的作业的结构。这个符号是什么意思,当我实现这个函数时,需要如何考虑这个问题,以及在我完成后如何调用它(与普通函数调用相同?) 这是第一次看到这种符号。实现是两个str\u数组变量之间的简单比较(我知道如何在没有奇怪符号的情况下实现)当您执行类似操作时(其中a和b是str\u数组) 将调用此函数 operator==是使用==调用的函数的名称。如果参数相等,则应该返回true 执行类似操作时(其中a和b是str

bool运算符==(str\u数组a、str\u数组b)

其中
str\u array
是我的作业的结构。这个符号是什么意思,当我实现这个函数时,需要如何考虑这个问题,以及在我完成后如何调用它(与普通函数调用相同?)


这是第一次看到这种符号。实现是两个
str\u数组
变量之间的简单比较(我知道如何在没有奇怪符号的情况下实现)

当您执行类似操作时(其中a和b是str\u数组)

将调用此函数


operator==
是使用
==
调用的函数的名称。如果参数相等,则应该返回true

执行类似操作时(其中a和b是str_数组)

将调用此函数

operator==
是使用
==
调用的函数的名称。如果参数相等,则应该返回true

我做完了怎么称呼它

因为您已经定义了一个操作符,所以它不像“普通”函数那样被调用!相反,它可以像“正常”操作符一样使用:

str_array a1;
str_array a2;
...
if (a1 == a2)
    do_something();
stru数组sa1;
stru阵列sa2;
//.. 一些代码
如果(sa1==sa2){//这里,您正在调用您定义的==运算符
//做点什么
}
然而,实现将看起来像一个正常的功能:

bool运算符==(str_数组a、str_数组b){
布尔回答;
//..
//根据a和b的相等性设置“答案”的代码
//
返回答案;
}
我做完了怎么称呼它

因为您已经定义了一个操作符,所以它不像“普通”函数那样被调用!相反,它可以像“正常”操作符一样使用:

str_array a1;
str_array a2;
...
if (a1 == a2)
    do_something();
stru数组sa1;
stru阵列sa2;
//.. 一些代码
如果(sa1==sa2){//这里,您正在调用您定义的==运算符
//做点什么
}
然而,实现将看起来像一个正常的功能:

bool运算符==(str_数组a、str_数组b){
布尔回答;
//..
//根据a和b的相等性设置“答案”的代码
//
返回答案;
}

这是运算符重载。您正在创建一个重载的
=
操作符,该操作符在操作符的任一侧接受一个
str_数组
对象:

str_array a1;
str_array a2;
...
if (a1 == a2)
    do_something();

这是运算符重载。您正在创建一个重载的
=
操作符,该操作符在操作符的任一侧接受一个
str_数组
对象:

str_array a1;
str_array a2;
...
if (a1 == a2)
    do_something();
此函数

bool operator==(str_array a, str_array b);
为类型为
str\u array
的对象引入重载相等运算符(运算符==)

因此,您可以将该类型的twp对象与基本类型进行比较,例如

if ( a == b ) { /* do something */ } 
编译器将用表达式
a==b
替换重载的
运算符==
(函数)的调用

下面是一个带有两个重载运算符的演示程序:
operator==
operator此函数

bool operator==(str_array a, str_array b);
为类型为
str\u array
的对象引入重载相等运算符(运算符==)

因此,您可以将该类型的twp对象与基本类型进行比较,例如

if ( a == b ) { /* do something */ } 
编译器将用表达式
a==b
替换重载的
运算符==
(函数)的调用

下面是一个带有两个重载运算符的演示程序:
运算符==
运算符