• 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
  • 相关阅读:
    spring4之依赖注入的三种方式
    Hibernate之总结
    Hibernate之dynamic-update
    ThinkPhp调用webservice
    Robot Framework:Web自动化之-元素处理
    Robot Framework:Web自动化之-元素定位
    RobotFramework:python+robotframework+selenium2library测试环境部署说明文档
    Robot Framework:Httplibrary库
    URL备忘
    Windows:CMD命令备忘
  • 原文地址:https://www.cnblogs.com/cutepig/p/1956915.html
Copyright © 2020-2023  润新知