C++变量生命周期探索代码

#include <iostream>
using namespace std;
int g_n = 0;
class CTest
{
public:
    CTest()
    {
        m_n = ++g_n;
        cout << "CTest() " << m_n << endl;
    }

    virtual ~CTest()
    {
        cout << "~CTest() " << m_n << endl;
    }

    CTest(CTest & other)
    {
        m_n = ++g_n;
        cout << "CTest(CTest & other) " << m_n << endl;
    }

    CTest & operator=(CTest & other)
    {
        cout << "CTest & operator=(CTest & other) " << m_n << endl;
        return *this;
    }
private:
    int m_n;
};

CTest g_o;

void fun(CTest other)
{

}

void fun2(CTest & other)
{

}

CTest fun3()
{
    CTest a;
    return a;
}

CTest & fun4()
{
    return g_o;
}
void main()
{
    cout << "---------1-----------" << endl;
    {
        CTest a;
        cout << "-1-" << endl;
    }
    cout << "---------2-----------" << endl;
    {
        CTest a;
        CTest b = a;
        cout << "-2-" << endl;
    }
    cout << "---------3-----------" << endl;
    {
        CTest a,b;
        a=b;
        cout << "-3-" << endl;
    }
    cout << "---------4-----------" << endl;
    {
        CTest a;
        fun(a);
        cout << "-4-" << endl;
    }
    cout << "---------5-----------" << endl;
    {
        CTest a;
        fun2(a);
        cout << "-5-" << endl;
    }
    cout << "---------6-----------" << endl;
    {
        fun3();
        cout << "-6-" << endl;
    }
    cout << "---------7-----------" << endl;
    {
        CTest a = fun3();
        cout << "-7-" << endl;
    }
    cout << "---------8-----------" << endl;
    {
        CTest & a = fun3();
        cout << "-8-" << endl;
    }
    cout << "---------9-----------" << endl;
    {
        CTest a;
        a = fun3();
        cout << "-9-" << endl;
    }
    cout << "---------10-----------" << endl;
    {
        fun4();
        cout << "-10-" << endl;
    }
    cout << "---------11-----------" << endl;
    {
        CTest a = fun4();
        cout << "-11-" << endl;
    }
    cout << "---------12-----------" << endl;
    {
        CTest & a = fun4();
        cout << "-12-" << endl;
    }
    cout << "---------13-----------" << endl;
    {
        CTest a;
        a = fun4();
        cout << "-13-" << endl;
    }    
    cout << "---------14-----------" << endl;
    {
        fun(fun3());
        cout << "-14-" << endl;
    }
    cout << "---------15-----------" << endl;
    {
        fun2(fun3());
        cout << "-15-" << endl;
    }
    cout << "---------16-----------" << endl;
    {
        fun(fun4());
        cout << "-16-" << endl;
    }
    cout << "---------17-----------" << endl;
    {
        fun2(fun4());
        cout << "-17-" << endl;
    }
    cout << "---------18-----------" << endl;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值