zoukankan      html  css  js  c++  java
  • C++: RVO( return value optimization)

    #include <stdio.h>

    class RVO

    {

    public:

        RVO()

        {

        printf("I am in constructor %d\n", this);

        }

        RVO (const RVO& c_RVO)

        {

        printf ("I am in copy constructor %d\n", this);

        }

        ~RVO()

        {

        printf ("I am in destructor %d\n", this);

        }

        RVO& operator=(const RVO& rhs)

        {

        printf ("I am in operator %d = %d\n", this, &rhs);

        return *this;

        }

        int mem_var;

    };

    RVO MyMethod (int i)

    {

        printf("3\n");

        RVO rvo; //I am in constructor 1244896

        printf("4\n");

        rvo.mem_var = i;

        printf("5\n");

        return (rvo); //1244948CC, ~1244896

        printf("6\n");

    }

    int main()

    {

        printf("1\n");

        RVO rvo; //I am in constructor 1245016

        printf("2\n");

        rvo=MyMethod(5); //I am in copy constructor

        printf("7\n");

        return 0; //~1245016

    }


    RVO MyMethod (RVO& hddenObj, int i)

    {

        printf("3\n");

        RVO rvo;
        rvo.RVO();    //I am in constructor 1244896

        printf("4\n");

        rvo.mem_var = i;

        printf("5\n");

        hddenObj.RVO(rvo);    //I am in copy constructor
        rvo.~RVO();    
        
        return ; //1244948CC, ~1244896
        
        printf("6\n");

    }

    int main()

    {

        printf("1\n");

        RVO rvo; //I am in constructor 1245016

        printf("2\n");

        rvo=MyMethod(5); //I am in copy constructor

        printf("7\n");

        return 0; //~1245016

    }

    1
    I am in constructor 1245016
    2
    3
    I am in constructor 1244888
    4
    5
    I am in copy constructor 1244944
    I am in destructor 1244888
    I am in operator 1245016 = 1244944
    I am in destructor 1244944
    7
    I am in destructor 1245016
  • 相关阅读:
    4.Android开发笔记:Activity的生命周期、启动方式、最佳实践
    3.Android开发笔记:Activity 数据传递
    2.Android开发笔记:Activity
    1.《Android开发笔记》系列
    JS
    Mongodb 学习笔记简介
    Sql Server MySql 日期
    实现tomcat与IIS共用80端口
    学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础--第4章
    学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础
  • 原文地址:https://www.cnblogs.com/cutepig/p/1956915.html
Copyright © 2011-2022 走看看