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运算符重载)