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
  • 相关阅读:
    shipyard-----------docker容器的可视化管理
    dockerfile制作镜像
    docker容器ip地址的设定
    docker镜像文件的安装和容器的操作
    Docker网络模式
    docker整体了解
    spring的aop学习(1)
    SqlSessionFactory的创建过程
    spring+springMVC+Maven+mysql环境搭建
    dubbo入门示例
  • 原文地址:https://www.cnblogs.com/cutepig/p/1956915.html
Copyright © 2011-2022 走看看