根据我的理解,
bool conditional = getTrueOrFalse();
将根据代码中该确切行的getTrueOrFalse()
设置条件。
如何在每次使用变量conditional
的情况下进行调整,它会调用getTrueOrFalse()
(因为getTrueOrFalse()
在整个程序的不同点上切换为true和false)?我以后能够将conditional
设置为不同的布尔返回函数吗?
答案 0 :(得分:4)
您可以尝试function pointers。
#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&lt;&gt; conditional
代替(就像在我的代码段中一样),每次使用括号运算符时都可以重新计算它。
仅供参考,还有很多其他方法可以完成同样的壮举:
lhs =左侧或存储地址的地方
rhs =您的操作的实施