函数参数中的引用
来源:互联网 发布:中电海康研究院 知乎 编辑:程序博客网 时间:2024/06/05 11:39
建议:
1. 当函数要修改参数时, 建议参数使用指针或返回值, 而不是引用, 以增加可读性.
void incr1(int &x) { ++x; }void incr2(int *x) { ++(*x); }int incr3(int x) { return x + 1; }int main() { int i = 2; incr1(i); //i = 3 incr2(&i); //i = 4 i = incr3(i); //i = 5 return 0;}
从以上代码可以看出, 调用函数incr1并不知道i要被修改, 而incr2和incr3函数修改值的提示性更强. 所以不建议使用函数incr1的形式.
2. 当函数参数类型是一个很大的类且不需要修改参数时, 建议使用const &, 以减少参数复制的开销.
class Big {public: //...};void f(const Big& b) { cout << &b << endl; //address:0020FD6F}int main() { Big b; cout << &b << endl; //address:0020FD6F f(b); return 0;}
参数的值传递会调用Big类的复制构造函数进行对象的复制, 而使用引用, 则不会复制对象. 代码中, main函数中的对象b和f函数中的b代表同一个对象.
References:
《The C++ Programming Language, Special Edition》ch5.5 page98-99, ch5.8[6] page104, ch7.9[1] page163
- 函数参数中的引用
- 函数模板中的参数引用问题
- 浅谈函数参数中的引用传递
- C++中的引用变量、默认参数和函数重载
- 关于函数嵌套调用中的参数引用问题
- javascript中,函数参数中的值传递和引用传递
- 引用作为函数参数
- 引用做函数参数
- 引用作为函数参数
- 关于参数中的引用
- [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子
- python函数参数传递引用,引用计数
- c++引用和引用作为函数参数
- 引用作为函数参数和常引用作为函数参数
- 构造函数中的引用
- 函数模版中的引用
- C++函数中的引用
- 函数中的引用
- oracle 数据类型
- Android--ListView 更高效的使用 Adapter
- Android TextView的各种属性
- apr_dbd_escape
- JavaSE基础复习:面向对象知识点二
- 函数参数中的引用
- 虚拟机启动,硬盘很慢
- 关于ORACLE的UPDATE更新多表的问题
- 64位Eclipse运行时提示“Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll”的一个解决方案
- 并查集的实现
- Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1
- 在oracle9i数据库中排除某些表做owner级别导出
- Oracle ORA-12541:TNS:no listener错误解决方法
- 3I工作室内训活动