C++拷贝构造函数调用时机

拷贝构造函数调用时机通常有三种情况:

1.使用一个已经创建完毕的对象来初始化一个新对象。

2.以值传递的方式给函数参数传值。

3.以值方式返回局部对象。

#include<iostream>
using namespace std;

class WLM
{
public:
    WLM()
    {
        cout << "默认构造函数调用!" << endl;
    }
    WLM(int age)
    {
        m_Age = age;
        cout << "有参构造函数调用!" << endl;
    }

    WLM(const WLM &wlm)
    {
        m_Age = wlm.m_Age;
        cout << "拷贝构造函数调用!" << endl;
    }

    ~WLM()
    {
        cout << "析构函数调用!" << endl;
    }
public:
    int m_Age;
};

//1.使用一个创建完毕的对象来初始化一个新的对象
void test1()
{
    WLM zjy1(10);
    WLM zjy2(zjy1);
}

//2.以值传递的方式给函数参数传值
//相当于WLM wlm = zjy;
void dowork1(WLM wlm)
{
}

void test2()
{
    WLM zjy;
    dowork1(zjy);
}

//3.以值方式返回局部对象
WLM dowork2()
{
    WLM zjy1;
    cout << "zjy1的地址:" << (int *)&zjy1 << endl;
    return zjy1;
}

void test3()
{
    WLM zjy2 = dowork2();
    cout << "zjy2的地址:" << (int *)&zjy2 << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
    test1();
    test2();
    test3();
    
    system("pause");
    return 0;
}

 

posted @ 2022-07-25 15:43  萌萌的保镖  阅读(132)  评论(0)    收藏  举报