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
  • 相关阅读:
    Turn the corner
    全排列的递归算法
    全排列的递归算法
    二分   三分搜索
    二分   三分搜索
    理解 Linux 的硬链接与软链接
    一个 Linux 上分析死锁的简单方法
    char能表示(-128~127)
    UNIX网络编程——ioctl 函数的用法详解
    UNIX网络编程——原始套接字(dos攻击)
  • 原文地址:https://www.cnblogs.com/cutepig/p/1956915.html
Copyright © 2011-2022 走看看