逻辑与 && 和 逻辑或 || 运算符 是 可以重载的 , 这两个操作符是 特殊操作符 ;
短路规则 : 其 内部 内置了 短路 规则 , 也就是
C++ 函数实现 , 无法实现短路规则 ; 因此 一般情况下 , 不实现 逻辑与 和 逻辑或 的运算符重载 ;
连续运算规则 : 逻辑与 && 和 逻辑或 || 运算符 重载的函数 , 需要 连续执行 , 比如 3 3 3 个对象进行连续的 逻辑与 && 和 逻辑或 || 运算 ; 返回值需要满足上述要求 , 一般为 bool ;
使用 成员函数 实现 逻辑与 && 运算符重载 :
Student s1, s2
之间进行 逻辑与 && 运算符 运算 ,s1 && s2
;operator&&
;operator&&
s1 && s2
;operator&&(Student& s)
bool operator&&(Student& s)
// 使用 成员函数 实现 逻辑与 && 运算符重载
bool operator&&(const Student& s)
{
// 函数体省略
return true;
};
使用 成员函数 实现 逻辑或 || 运算符重载 :
Student s1, s2
之间进行 逻辑或 || 运算符 运算 ,s1 || s2
;operator||
;operator||
s1 || s2
;operator||(Student& s)
bool operator||(Student& s)
// 使用 成员函数 实现 逻辑或 || 运算符重载
bool operator||(const Student& s)
{
// 函数体省略
return false;
};
代码示例 :
#include "iostream"
using namespace std;
class Student
{
public:
// 使用 成员函数 实现 括号() 运算符重载
int operator()(int a, int b)
{
return a + b;
};
// 使用 成员函数 实现 逻辑与 && 运算符重载
bool operator&&(const Student& s)
{
// 函数体省略
return true;
};
// 使用 成员函数 实现 逻辑或 || 运算符重载
bool operator||(const Student& s)
{
// 函数体省略
return false;
};
};
int main() {
Student s1, s2;
// 调用 括号 运算符
cout << "s1(1, 2) = " << s1(1, 2) << endl;
// 调用 逻辑与 运算符
cout << "s1 && s2 = " << (s1 && s2) << endl;
// 调用 逻辑或 运算符
cout << "s1 || s2 = " << (s1 || s2) << endl;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 :
s1(1, 2) = 3
s1 && s2 = 1
s1 || s2 = 0
Press any key to continue . . .