C++ bool类型的引用调用

C++ bool类型的引用调用,c++,boolean,pass-by-reference,C++,Boolean,Pass By Reference,我怎样才能将这段代码更改为工作代码 #include <iostream> void foo( bool &b ) // ERROR in passing argument 1 of ‘void foo(bool&)’ { std::cout << b << '\n'; } int main() { foo( false ); // ERROR invalid initialization of non-const refe

我怎样才能将这段代码更改为工作代码

#include <iostream>

void foo( bool &b )  // ERROR in passing argument 1 of ‘void foo(bool&)’
{
   std::cout << b << '\n';
}

int main()
{
  foo( false );   // ERROR invalid initialization of non-const reference of type ‘bool&’ from a temporary of type ‘bool’
  return 0;
}
#包括
void foo(bool&b)//传递'void foo(bool&')的参数1时出错
{

std::cout引用调用需要一个地址,您正在传递一个常量。为什么不

bool aValue;
aValue = false;
foo(aValue);

引用调用需要一个地址,您正在传递一个常量。为什么不

bool aValue;
aValue = false;
foo(aValue);

引用调用需要一个地址,您正在传递一个常量。为什么不

bool aValue;
aValue = false;
foo(aValue);

引用调用需要一个地址,您正在传递一个常量。为什么不

bool aValue;
aValue = false;
foo(aValue);
这将使用bool类型的临时对象调用foo

您不能将临时引用绑定到非常量引用,因此会出现错误。在常量引用的情况下,这是可能的

void foo( const bool &b );
//...
foo( false ); // OK
在您的情况下,似乎不想更改传递给函数的对象,而只想打印它。这样就不需要传递引用,只需按值传递对象

void foo( bool b ) { std::cout << b;}
//...
foo( false ); // OK
void foo(bool b){std::cout
这将使用bool类型的临时对象调用foo

您不能将临时引用绑定到非常量引用,因此会出现错误。在常量引用的情况下,这是可能的

void foo( const bool &b );
//...
foo( false ); // OK
在您的情况下,似乎不想更改传递给函数的对象,而只想打印它。这样就不需要传递引用,只需按值传递对象

void foo( bool b ) { std::cout << b;}
//...
foo( false ); // OK
void foo(bool b){std::cout
这将使用bool类型的临时对象调用foo

您不能将临时引用绑定到非常量引用,因此会出现错误。在常量引用的情况下,这是可能的

void foo( const bool &b );
//...
foo( false ); // OK
在您的情况下,似乎不想更改传递给函数的对象,而只想打印它。这样就不需要传递引用,只需按值传递对象

void foo( bool b ) { std::cout << b;}
//...
foo( false ); // OK
void foo(bool b){std::cout
这将使用bool类型的临时对象调用foo

您不能将临时引用绑定到非常量引用,因此会出现错误。在常量引用的情况下,这是可能的

void foo( const bool &b );
//...
foo( false ); // OK
在您的情况下,似乎不想更改传递给函数的对象,而只想打印它。这样就不需要传递引用,只需按值传递对象

void foo( bool b ) { std::cout << b;}
//...
foo( false ); // OK



void foo(bool b){std::cout使用const bool&而不是bool&在您的示例中,为什么需要引用它?@omid或干脆
bool
@keyser:这是一个更大代码的片段!还要注意这与
bool
的类型无关。使用const bool&而不是bool&在您的示例中,为什么需要引用它?@omid或干脆e> bool
@keyser:这是一个较大代码的片段!还要注意,这与
bool
的类型无关。使用const bool&而不是bool&在您的示例中,为什么需要引用它?@omid或干脆
bool
@keyser:这是一个较大代码的片段!还要注意,这与
的类型无关>bool
。使用const bool&而不是bool&在您的示例中,为什么需要引用它?@omid或干脆
bool
@keyser:这是一个较大代码的片段!还要注意,这与
bool
的类型无关。这也是可能的。它实际上不需要“地址”。如果我错了,请原谅,传递给函数的不是堆栈/堆上的内存位置,而不是驻留在内存位置的值吗?这将是一个实现细节。从语义上讲,引用只是对象的别名。在这种情况下,需要的是左值。这也是可能的。它实际上不是需要“地址”。如果我错了,请原谅,传递给函数的不是堆栈/堆上的内存位置,而不是驻留在内存位置的值吗?这将是一个实现细节。从语义上讲,引用只是对象的别名。在这种情况下,需要的是左值。这也是可能的。它实际上不是需要“地址”。如果我错了,请原谅,传递给函数的不是堆栈/堆上的内存位置,而不是驻留在内存位置的值吗?这将是一个实现细节。从语义上讲,引用只是对象的别名。在这种情况下,需要的是左值。这也是可能的。它实际上不是需要“地址”。如果我错了,请原谅,传递给函数的不是堆栈/堆上的内存位置,而不是驻留在内存位置的值吗?这将是一个实现细节。从语义上讲,引用只是对象的别名。在这种情况下,需要的是左值。
则无需传递re引用,您可以按值传递对象。
仅适用于小对象。如果传递的对象是大数据结构,该怎么办?最好使用&。
则无需传递引用,您可以按值传递对象。
仅适用于小对象。如果传递的对象是大数据结构,该怎么办?最好使用have&.
则无需传递引用,您只需按值传递对象。
仅适用于小对象。如果传递的对象是大型数据结构,该怎么办?最好有&.
则无需传递引用,您只需按值传递对象。
仅适用于小对象。如果对象传递了,该怎么办是大型数据结构吗?还是拥有&。