拷贝控制成员和构造函数实例

Posted summer-8918

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拷贝控制成员和构造函数实例相关的知识,希望对你有一定的参考价值。

理解拷贝控制成员和构造函数的一个好方法是定义一个简单的类,为该类定义这些成员,每个成员都打印出自己的名字。

拷贝初始化通常使用拷贝构造函数来完成。

#include<stdio.h>
#include<iostream>
#include<vector>
using namespace std;

#include <iostream>
#include <vector>
#include <initializer_list>

struct X
{
    X() { std::cout << "构造函数X()" << std::endl; }
    X(const X&) { std::cout << "拷贝构造函数X(const X&)" << std::endl; }
    X& operator=(const X &rhs) { 
        std::cout << "拷贝赋值运算符=(const X&)" 
        << std::endl;
        return *this;
    }
    ~X() { std::cout << "析构函数~X()" << std::endl; }
};

void f1(X x)
{

}

void f2(X &x)
{

}
int main()
{
    cout << "局部变量:" << endl;
    X x;
    cout << endl;

    cout << "非引用参数传递:" << endl;
    f1(x);
    cout << endl;

    cout << "引用参数传递:" << endl;
    f2(x);
    cout << endl;

    cout << "动态分配" << endl;
    X *px = new X;
    cout << endl;

    cout << "添加到容器中:" << endl;
    vector<X> vx;
    vx.push_back(x);
    cout << endl;

    cout << "释放动态分配对象:" << endl;
    delete px;
    cout << endl;

    cout << "间接初始化和赋值:" << endl;
    X y = x;
    y = x;
    cout << endl;

    cout << "程序结束" << endl;
    return 0;
}

输出结果技术分享图片

 

以上是关于拷贝控制成员和构造函数实例的主要内容,如果未能解决你的问题,请参考以下文章

类拓展——拷贝控制成员

C++拷贝控制含有指针成员的类

C++拷贝控制含有指针成员的类

浅谈C++类的拷贝控制

C++类拷贝控制 深拷贝 浅拷贝

C++C++的拷贝控制