非const引用不能绑定非左值(no-lvalue) .
2012-04-13 17:18
295 查看
对于一个const T&的初始式不必是一个左值,甚至可以不是类型T,但是非const引用不能绑定非左值(no-lvalue)
非const引用
double &dr =1; //错误:要求左值
const引用
const double &dr=1; //OK
对于const引用的解释:
double temp=double(1); //首先建立一个具有正确值的临时变量
const double &dr=temp; //而后用这个临时变量作为dr的初始式
例如:
View Code
本文引用自:http://blog.csdn.net/missvip/article/details/1781154
非const引用
double &dr =1; //错误:要求左值
const引用
const double &dr=1; //OK
对于const引用的解释:
double temp=double(1); //首先建立一个具有正确值的临时变量
const double &dr=temp; //而后用这个临时变量作为dr的初始式
例如:
View Code
#include <iostream> #include <string> using namespace std; void TestFuncOne(const string & str) { cout<<str<<endl; return; } void TestFuncTwo(string & str) { cout<<str<<endl; return; } int main() { TestFuncOne("Hello World!"); //正确 TestFuncTwo("Hello World!"); //错误 非const引用不能绑定非左值(no-lvalue) return 0; }
本文引用自:http://blog.csdn.net/missvip/article/details/1781154
相关文章推荐
- 非const引用不能绑定非左值(no-lvalue)
- 由重建二叉树算法题到临时对象不能绑定到非 const 的左值引用
- C++非const的引用不能指向临时对象
- const 类型的函数不能返回非const类型的引用
- no known conversion for argument 1 from ‘[some_class]' to ‘[some_class]&’ 传const引用而非引用
- CString 转化为 const char*的方法(经验证) “0x77d287f1”指令引用的“0x00000000”内存。该内存不能为“written”。
- 非const引用不能指向临时变量
- const 类型的函数不能返回非const类型的引用
- 拷贝构造函数不能传值,只能传引用,而且一般是传const引用
- 非const引用参数传入不同类型编译不过的理解(拒绝将临时对象绑定为非const的引用的形参是有道理的)
- 临时对象不能被绑定到非const引用参数上====》扩展到临时对象问题
- 不能将类型为‘std::string&’的非 const 引用初始化为类型为‘const char*’的临时变量
- C++的const和引用只能在初始化列表里初始化而不能在构造函数体内赋值初始化
- const对象不能被引用
- 非常量引用不能绑定在临时变量上
- 非常量引用不能绑定在临时变量上
- 常见const引用的绑定与赋值问题
- 常见const引用的绑定与赋值问题
- 【转载】用const修饰函数 以及引起的附加限制:const函数不能调用非const的函数或引用非const参数
- log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法