-2

我想做的是下面的一个例子。

让我们首先定义一个布尔值。

bool cat = {false};

让我们在这里做一个假布尔。

bool setcat(bool booltoset)
{
 booltoset = true; 
 return booltoset;
}

现在让我们用 cat 来调用它。

printf("cat is %s", cat?"true":"false"); //set cat as false.

我的问题是;是否可以通过参数实际传递布尔值而不是设置该布尔值?

4

2 回答 2

4

您需要通过引用传递,即:

void setcat(bool& booltoset)
{
 booltoset = true; 
}
于 2013-08-11T18:35:47.480 回答
0

任何函数参数只是一个范围与函数体相同的变量。如果它是一个普通的自动变量,那么改变它对调用者没有影响。这有时很有用:您实际上可以使用参数,例如:

template<typename F>
void for_each(noexcept_it i, const noexcept_it end, const F &f) noexcept(noexcept(f))
{
   for(; i!=end; ++i) f(i);   // use i as iteration variable.
}

尽管在大多数情况下编译器都会优化这些东西。

于 2013-08-11T18:39:16.910 回答