C++学习 十四、类的进阶(6)返回对象
前言
- 前言
- 类与动态内存小结
- 函数返回对象
- 返回非const对象
- 返回const对象
- 返回非const引用对象
- 返回const引用对象
- 示例
- 后记
本篇首先小结类中动态内存的使用,然后记录返回对象。
类与动态内存小结- 构造函数中使用
new
分配动态内存,则析构函数中必须使用delete
释放动态内存。 - 析构函数只有一个。因此有多个构造函数时,要考虑
new
与new []
的兼容性。 - 构造函数如果分配动态内存,则需要定义一个深拷贝复制构造函数,重载一个深拷贝赋值运算符。
函数除了返回普通对象以外,还可以返回对象的引用(或指针),const对象,const引用对象或指针。
返回非const对象上篇提到,函数返回对象会调用复制构造函数(编译器关闭RVO),增加了程序运行时间和内存使用。
- 当需要返回的对象是局部变量,则返回普通对象。
返回const类型的目的在于,const常量不会被修改。
- 当需要返回的对象时局部变量,并且不希望函数调用语句被赋值,则返回const对象。
返回对象的引用(指针)的好处是,不会调用复制构造函数。
- 当需要返回的对象是函数传入的引用,并且返回的对象后续可被修改,则返回非const对象的引用
注意:返回的引用必须是在函数结束后仍然存在的对象。在函数中创建的局部对象不能通过引用和指针返回。
返回const引用对象返回const引用,一方面可以防止函数调用语句被赋值,另一方面如果要返回传入的const引用,则返回类型必须是const引用。
示例#include
#include
#include
using std::ostream;
class A{
private:
int a_;
int b_;
int c_;
public:
A();
A(int, int, int);
A operator- (const A&) const;
const A operator+ (const A&) const;
const A& operator= (const A&);
friend ostream& operator
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?