在什么时候需要使用“常引用”?
2013-05-27 21:05
162 查看
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符 &引用名=目标变量名;
例1
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
例2
string foo( );
void bar(string & s);
那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。
引用型参数应该在能被定义为const的情况下,尽量定义为const 。
例1
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
例2
string foo( );
void bar(string & s);
那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。
引用型参数应该在能被定义为const的情况下,尽量定义为const 。
相关文章推荐
- 在什么时候需要使用“常引用”?
- 在什么时候需要使用“常引用”?
- 在什么时候需要使用“常引用”?
- 在什么时候需要使用“常引用”?
- 什么时候需要使用引用
- 什么时候需要使用Double? double、float、decimal的区别
- 到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf
- 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!(转)
- 到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf
- 到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf
- 到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf
- 函数在什么时候需要“引用”类型的参数
- 什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用
- 静态属性或字段不再使用时,需要把其引用设置为null
- 使用SQLCONNECTION连接datasnap服务器时,需要引用DbxCompressionFilter单元 不然会报错argument out of range
- 为什么需要使用并发编程?什么时候适合使用并发编程技术?
- C++-什么时候需要在类的构造函数中使用初始化列表
- 在函数返回值需要使用到强制类型转换时,最好使用指针,光使用引用不保险
- 什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用
- 引用使用需要注意的总结