据我了解,
bool conditional = getTrueOrFalse();
getTrueOrFalse()
将根据代码中该确切行的内容设置条件。
每次使用该变量时,我如何才能conditional
将其调用getTrueOrFalse()
(getTrueOrFalse()
在整个程序的不同点在真假之间切换)?我以后可以设置conditional
为不同的布尔返回函数吗?
据我了解,
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 示例中,从技术上讲,您已经对该函数进行了一次评估并将其分配给 boolean conditional
。
如果您希望稍后在程序中进行评估,则必须通过函数指针(如我上面的片段)再次显式或隐式调用该函数。
另请注意,布尔值conditional
只是一个简单的内存位置,具有真/假的二进制表示 - 它不知道在 read 上刷新我的值。但是,如果您改用 std::function<> conditional
(就像在我的片段中一样),您可以在每次使用括号运算符时重新评估它。
仅供参考,还有许多其他方法可以完成基本相同的壮举:
lhs = 左侧或存储地址的位置
rhs = 执行您的操作