C++函数返回引用
来源:互联网 发布:淘宝网址导航 编辑:程序博客网 时间:2024/06/09 19:06
引用:给变量取别名
引用作为函数返回值的优点是,在内存中不产生被返回值的副本,从而大大提高程序的安全性与运行效率
注意事项:
l 不可以返回局部变量的引用。局部变量存储在栈空间,函数返回后会被销毁,因此返回的引用会变成无指向的引用,程序进入未知状态,引起程序错误甚至崩溃
l 不可以返回函数内部new分配的内存的引用(不是非法,代码习惯不好)。函数返回的引用只是作为一 个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。
l 可以返回类成员的引用,但最好是const。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常 量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。
一般为this指向的对象,典型的例子是string类的赋值函数。
l 流操作符<< >>
+-*/类似这些操作运算符不产生副作用,不能返回引用,必须构造一个对象作为返回值
引申:
引用返回左值(有时候返回引用的原因就是希望函数返回值作为左值)
String& String::operator =(const String &str) //注意与“+”比较,函数为什么要用引用呢?a=b=c,可以做为左值
{
if (this == &str)
{
return *this;
}
delete [] m_string;
int len = strlen(str.m_string);
m_string = new char[len+1];
strcpy(m_string,str.m_string);
return *this;
}
第二点中返回函数内部new分配的内存的引用
这样的代码习惯不好的原因
- 12.c++-返回引用的函数
- <<c++primer>>返回引用的函数调用
- 常量函数、常量引用参数、常量引用返回值[C++]
- 常量函数、常量引用参数、常量引用返回值[C++]
- c++:函数返回引用类型和非引用类型
- 函数返回值 返回引用
- c++ 函数返回引用
- c++函数返回引用
- 函数 返回引用
- c++ 函数返回引用
- C++函数返回引用
- c++ 函数返回引用
- c++ 函数返回引用
- C++函数返回引用
- c++函数返回引用
- 引用返回函数值
- C++函数返回引用
- 返回引用的函数
- C++类的静态变量成员和静态成员函数的使用
- 【算法导论学习笔记】最大子数组问题
- 调整打印机适应套打的边距
- 欧拉函数
- text-align无法实现居中
- C++函数返回引用
- 安装imagej
- Shell 流程控制~09
- HDU 5810Balls and Boxes【二项分布】
- 数据库查询优化之索引的使用详解
- Android开发之EventBus讲解
- 【软件安全】cwe-89 SQL Injection(四)
- maven执行ssh三大框架+oracle数据库的一般步骤及注意事项
- 各排序算法时间复杂度和空间复杂度对比总结