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
关注
打赏