将函数调用分配给变量
Assigning a function call to a variable
据我所知,
bool conditional = getTrueOrFalse();
将条件设置为代码中该行getTrueOrFalse()
的确切位置。
我怎样才能做到每次使用变量conditional
时,它都会调用getTrueOrFalse()
(因为getTrueOrFalse()
在整个程序的不同点在真和假之间切换(?我以后是否可以将conditional
设置为不同的布尔返回函数?
您可以尝试函数指针。
#include <functional>
std::function<bool()> conditional = &getTrueOrFalse; // no evaluation yet
if ( conditional() ) // actual evaluation
{
} else {
}
conditional = &isSunShining; // no evaluation yet: just point to something else
OP不清楚,因为你没有考虑功能评估。 你必须问自己,我什么时候真正想评估函数? 使用括号时,实际上是在计算函数或函数指针。 在您的 OP 示例中,从技术上讲,您已经评估了该函数一次并将其分配给布尔conditional
。
如果你想在程序的稍后时刻进行评估,你必须通过函数指针再次显式或隐式调用该函数,就像我上面的代码片段一样。
另请注意,布尔conditional
只是一个简单的内存位置,二进制表示为 true/false - 它不知道在读取时刷新我的值。 但是,如果您使用 std::function<> conditional
代替(就像在我的代码片段中一样(,您可以在每次使用括号运算符时重新评估它。
仅供参考,还有许多其他方法可以完成基本相同的壮举:
- 原始 C 样式函数指针 (lhs(
- C++11 λ
- 函子 : 带有运算符(( (RHS( 的类
LHS = 左侧或存储地址的位置
RHS = 实施您的操作
相关文章:
- 是否可以使用其他变量为变量分配值,而无需在 C++ 中更改其值?
- 将字符串变量分配给无符号字符变量
- 将延迟变量分配给引用变量
- 为什么以下变量分配不正确
- 如何在 c++ 中将两个不同类型的变量分配给一个变量
- C++ 无法将字符数组变量分配给字符串变量
- 直接为浮点变量分配十六进制整数与通过指针转换分配之间的区别
- 识别矩阵变量分配的行为
- C 为什么在原始双阵列中的分配似乎比双变量分配要快得多
- C++:如何将 char 变量分配给向量<char>并访问该向量的元素进行比较?
- 将局部方法变量分配给类指针
- 类构造函数中的静态成员变量分配
- 如果条件语句中的变量分配
- C++ - 将一个变量分配给另一个变量和将变量分配给引用变量有什么区别?
- 需要帮助了解指针变量分配
- 从值捕获的变量分配到lambda参数时,GCC编译器分割故障
- 将非按引用变量分配给返回按引用的函数,反之亦然
- 通过结构指针访问结构变量分配错误数据
- 分段故障(核心倾倒)变量分配
- 在名称空间之外的C 中的外部变量分配值