您当前的位置: 首页 >  c++

RuiH.AI

暂无认证

  • 5浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习 十四、类的进阶(6)返回对象

RuiH.AI 发布时间:2022-02-20 12:27:46 ,浏览量:5

C++学习 十四、类的进阶(6)返回对象
  • 前言
  • 类与动态内存小结
  • 函数返回对象
    • 返回非const对象
    • 返回const对象
    • 返回非const引用对象
    • 返回const引用对象
    • 示例
  • 后记

前言

本篇首先小结类中动态内存的使用,然后记录返回对象。

类与动态内存小结
  • 构造函数中使用new分配动态内存,则析构函数中必须使用delete释放动态内存。
  • 析构函数只有一个。因此有多个构造函数时,要考虑newnew []的兼容性。
  • 构造函数如果分配动态内存,则需要定义一个深拷贝复制构造函数,重载一个深拷贝赋值运算符。
函数返回对象

函数除了返回普通对象以外,还可以返回对象的引用(或指针),const对象,const引用对象或指针。

返回非const对象

上篇提到,函数返回对象会调用复制构造函数(编译器关闭RVO),增加了程序运行时间和内存使用。

  • 当需要返回的对象是局部变量,则返回普通对象。
返回const对象

返回const类型的目的在于,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            
关注
打赏
1658651101
查看更多评论
0.0525s