gpt4 book ai didi

c++ - 将函数调用分配给变量

转载 作者:太空狗 更新时间:2023-10-29 21:01:17 24 4
gpt4 key购买 nike

据我了解,

bool conditional = getTrueOrFalse();

将条件设置为 getTrueOrFalse() 在代码中的那一行。

每次使用变量 conditional 时,我怎样才能到达它调用 getTrueOrFalse() 的位置(如 getTrueOrFalse()在整个程序的不同点在 true 和 false 之间切换)?我可以稍后将 conditional 设置为不同的 bool 返回函数吗?

最佳答案

你可以试试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 示例中,从技术上讲,您已经对函数进行了一次评估并将其分配给 bool 值 conditional

如果您希望稍后在程序中进行评估,则必须通过函数指针(如我上面的代码片段)显式或隐式再次调用该函数。

另请注意, bool 值 conditional 只是一个简单的内存位置,具有 true/false 的二进制表示 - 它不知道 在读取时刷新我的值。但是,如果您改用 std::function<> conditional(就像在我的代码片段中一样),您可以在每次使用括号运算符时重新计算它。

仅供引用,还有许多其他方法可以完成基本相同的壮举:

  • 原始 C 风格函数指针 (lhs)
  • C++11 lambda (右轴)
  • 仿函数:带有 operator() 的类(右轴)

lhs = 左侧或您存储地址的位置

rhs = 执行你的操作

关于c++ - 将函数调用分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18970701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com