构造函数和析构函数的经典例子

构造函数、析构函数、复制构造函数的调用

#include <iostream>
using namespace std;

class A {
public:
    A() {
        cout << "构造函数调用" << endl;
    }

    A(const A &a) {//不加const会报错
        cout << "复制构造函数调用" << endl;
    }

    A& operator=(const A&a) {//不加const会报错
        cout << "重载的复制构造函数调用" << endl;
        return *this;
    }

    ~A() {
        cout << "析构函数调用" << endl;
    }

};

A function() {
    A x;
    return x;
}

int main()
{
    system("color fc");//调控制台背景色
    A b = function();
    cout << "----------" << endl;
    return 0;
}
image.png
#include <iostream>
using namespace std;

class A {
public:
    A() {
        cout << "构造函数调用" << endl;
    }

    A(const A &a) {//不加const会报错
        cout << "复制构造函数调用" << endl;
    }

    A& operator=(const A&a) {
        cout << "重载的复制构造函数调用" << endl;
        return *this;
    }

    ~A() {
        cout << "析构函数调用" << endl;
    }
};

A function() {
    return A();
}

int main()
{
    system("color fc");//调控制台背景色
    A b = function();
    cout << "----------" << endl;
    return 0;
}
image.png
#include <iostream>
using namespace std;

class A {
public:
    A() {
        cout << "构造函数调用" << endl;
    }

    A(const A &a) {
        cout << "复制构造函数调用" << endl;
    }

    A& operator=(const A&a) {
        cout << "重载的复制构造函数调用" << endl;
        return *this;
    }

    ~A() {
        cout << "析构函数调用" << endl;
    }

};

A function(A x) {
    return x;
}

int main()
{
    system("color fc");//调控制台背景色
    A b = function(A());
    cout << "----------" << endl;
    return 0;
}
image.png
#include <iostream>
using namespace std;

class A {
public:
    A() {
        cout << "构造函数调用" << endl;
    }

    A(A &a) {
        cout << "复制构造函数调用" << endl;
    }

    A& operator=(const A&a) {
        cout << "重载的复制构造函数调用" << endl;
        return *this;
    }

    ~A() {
        cout << "析构函数调用" << endl;
    }

};

A function_1(A x) {
    return x;
}

A function_2() {
    A x;
    return x;
}

int main()
{
    system("color fc");//调控制台背景色
    A a;
    cout << "----------" << endl;
    function_1(a);
    cout << "----------" << endl;
    A b;
    b = function_2();
    cout << "----------" << endl;
    function_2();
    cout << "----------" << endl;
    return 0;
}
image.png
#include <iostream>
using namespace std;

class A {
public:
    A() {
        cout << "构造函数调用" << endl;
    }

    A(A &a) {
        cout << "复制构造函数调用" << endl;
    }

    A& operator=(const A&a) {
        cout << "重载的复制构造函数调用" << endl;
        return *this;
    }

    ~A() {
        cout << "析构函数调用" << endl;
    }

};

A function_3(A y) {
    A x;
    return x;
}

int main()
{
    system("color fc");//调控制台背景色
    A c;
    A d;
    c = function_3(d);
    cout << "----------" << endl;
    return 0;
}
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容