有关返回对象的说明
来源:互联网 发布:编程培训技术学校 编辑:程序博客网 时间:2024/06/07 08:33
1、返回指向const对象的引用
使用const引用常见的原因是旨在提高效率。如果函数返回(通过调用对象的方法或将对象作为参数)传递给它的对象,可以通过传递引用来提高方法的效率。比如编写函数Max,他返回两个Vertor对象中的较大一个,该函数将以下面方式被使用:
Vertor force1(50,60);
Vertor force2(10,70);
Vertor max;
max=Max(force,force2);
下面两种实现都是可行的:
//version 1Vertor Max(const Vertor &v1,const Vertor &v2){if(v1.magval()>v2.magval())return v1;elsereturn v2;}//version 2const Vertor & Max(const Vertor &v1,const Vertor &v2){if(v1.magval()>v2.magval())return v1;elsereturn v2;}
这里需要说明的:首先,返回对象将调用复制构造函数,而返回引用不会。因此第二个版本所做的工作更少,效率更高。其次,引用指向的对象应该在调用函数执行时存在。在这个例子中,引用指向force1或force2,它们都是在调用函数中定义的,因此满足这种条件。第三,v1和v2都被声明为const引用,因此返回类型必须为const,这样才匹配。
2、返回指向非const对象的引用
两种常用的返回非const对象的情形是,重载赋值操作符以及重载与cout一起使用的<<操作符。前者这样做旨在提高效率,而后者必须这样做。
operate=()的返回值用于连续赋值:
String s1("good stuff");String s2,s3;s3=s2=s1;
在上述代码中,s2.operator=(s2)的返回值被赋给时,为此,返回String对象或者Sring对象的引用都是可行的。
opreator<<()的返回值用于串接输出:
String s1(“good stuff”);
cout<<s1<<"is coming!";
在上述代码中operate<<(cout,s1)的返回值成为一个用于显示字符串“is coming”的对象,返回类型必须是ostream&,而不能仅仅是ostream。如果使用返回类型为ostream,将要求调用ostream类的复制构造函数,而ostream没有公有的复制构造函数。幸运的好似,返回一个指向cout的引用不会带来任何问题,因为cout已经在调用函数的作用域内。
3、返回对象
如果被返回的对象是被调用函数中的局部变量,则不应按引用方式返回它,因为在被调用函数执行完毕时,局部对象将调用其析构函数。因此,对控制权回到调用函数时,引用指向的对象将不再存在,在这种情况下,应返回对象而不是引用。
- 有关返回对象的说明
- 有关返回对象的说明
- 有关返回对象的说明
- (一三〇)有关返回对象的说明
- 返回对象的说明
- 有关DataAdapter对象的说明
- 有关返回对象的说明------指向对象的引用、指向对象的const引用和const对象
- 学习C++——有关返回对象的总结
- iOS面向对象的有关术语及说明
- 有关KernelRelocate的说明
- 有关volatile的说明
- 有关返回集合的错误
- 有关main的返回值
- XML CDATA的有关说明
- 有关 TDataLink 的说明文件
- 有关 TDataLink 的说明文件
- 有关 TDataLink 的说明文件
- 有关struts的配置说明
- Inno Setup的常用脚本
- Kinect人机交互开发实践
- MySQL 管理工具:Navicat for MySQL 8.0.19 中文版(破解版)
- java socket编程案例
- android 下 HTTP 的并发和线程协断式取消
- 有关返回对象的说明
- OpenStack系列讲座1:安装配置篇
- C#执行vbs文件
- Java的对象中的方法解析
- 關於 Android 下的自動化測試
- Android 用style简化layout布局文件
- 图片下载 缓存等问题
- java程序员菜鸟进阶(三)oracle基础详解(三)常用的SQL PLUS命令详解
- PowerDesigner生成数据库方法