c++(重载等号=操作为深拷贝)

Posted 听哥哥的话

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++(重载等号=操作为深拷贝)相关的知识,希望对你有一定的参考价值。

// ConsoleApplication19.cpp : 定义控制台应用程序的入口点。
//
#pragma warning(disable:4996)
#include "stdafx.h"
using namespace std;
#include <iostream>

class A {
public:

    //=等号操作默认的是浅拷贝 这里重载=为深拷贝 当类里出现指针变量 用等号是浅拷贝
    A& operator=(A& obj) 
    {
        if (this->pc != NULL) 
        {
            this->a = 0;
            delete this->pc;
        }
        this->a = obj.a;
        this->pc = new char[obj.a];
        return *this;
    }
    A() {}
    A(int a) 
    {
        this->a = a;
        this->pc = new char[a];
    }

    ~A() 
    {
        if (this->pc != NULL) 
        {
            delete pc;
        }
        cout << "A析构函数"<< endl;
    }
private:
    int a;
    char * pc;
};

class B {
public:
    B()
    {
    
    }

private:
    int b1;
    int b2;
    A a1;
    A a2;


};

void displayObj() 
{
    A a1(1);
    A a2;

    a2 = a1;


}
void main()
{
    displayObj();

    system("pause");
}

 

以上是关于c++(重载等号=操作为深拷贝)的主要内容,如果未能解决你的问题,请参考以下文章

经典问题解析三(三十)

黑马程序员 C++教程从0到1入门编程笔记4C++核心编程(类和对象——封装权限对象的初始化和清理构造函数析构函数深拷贝浅拷贝初始化列表友元friend运算符重载)

C++ 初阶string底层框架模拟实现

C++ 初阶string底层框架模拟实现

C++学习笔记之高级语法

C++类的成员函数:构造析构拷贝构造运算符重载