C++引用报错:invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type

参考: http://blog.csdn.net/zhenwo123/article/details/8031155

invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type ‘std::string’

#include
#include
using std::cout;
using std::string;
using std::endl;
void PrintStr(std::string& str);
int main()
{
    PrintStr(string("HelloWorld!"));   //string("HelloWorld!")  为一个临时变量
    return 0;
}
void PrintStr(std::string& str)
{
    cout<< str << endl;
}
说明:临时变量是转瞬即逝的,在上面的代码中,用str引用临时变量的时候临时变量已经不存在了。
解决方案:void PrintStr(std::string& str);改为void PrintStr(const std::string& str);
const 引用可以初始化为不同类型的对象或者初始化为右值。例如:
double dval = 1.131;
const int &ri = dval;
const int &r = 30;

你可能感兴趣的:(C++)