不要用std::cout,已知双目逻辑运算有“与”运算and 和“或”运算or,设计超级函数,可以实现任意的双目逻辑运算(提示:函数指针实现)
时间: 2023-12-14 10:36:23 浏览: 69
逻辑运算类_支持与或非逻辑运算
4星 · 用户满意度95%
可以使用函数指针实现,设计如下:
```cpp
#include <iostream>
// 声明函数类型为指向布尔值的函数指针
typedef bool (*LogicFunc)(bool, bool);
// 逻辑运算函数
bool and_op(bool a, bool b)
{
return a && b;
}
bool or_op(bool a, bool b)
{
return a || b;
}
// 超级函数
bool logic_op(bool a, bool b, LogicFunc op)
{
return op(a, b);
}
int main()
{
bool a = true;
bool b = false;
// 使用超级函数进行逻辑运算
std::cout << "a and b = " << logic_op(a, b, and_op) << std::endl;
std::cout << "a or b = " << logic_op(a, b, or_op) << std::endl;
return 0;
}
```
输出:
```
a and b = 0
a or b = 1
```
其中,`LogicFunc` 是一个函数指针类型,指向一个函数,该函数接受两个布尔值参数并返回一个布尔值。`and_op` 和 `or_op` 分别是指向 `and` 和 `or` 运算的函数指针,`logic_op` 是超级函数,接受两个布尔值和一个函数指针参数,根据函数指针参数指向的函数进行逻辑运算。最后在 main 函数中,使用超级函数进行逻辑运算。
阅读全文