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

原文链接: https://www.cnblogs.com/cutepig/archive/2011/02/17/1956915.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++: RVO( return value optimization)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/21112

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午11:07
下一篇 2023年2月7日 下午11:08

相关推荐