⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8_12.cpp

📁 c++案例教程源代码
💻 CPP
字号:
#include <iostream>  
#include<string> 
using namespace std;
class CDeepCopy
{public: 
	int    n;                       //动态数组的元素个数	
	int   *p;                       //动态数组首地址	
 	CDeepCopy(int) ; 		
	~CDeepCopy();
    CDeepCopy(const CDeepCopy& r) ;  //拷贝构造函数 
	CDeepCopy& operator=(const CDeepCopy& r); //赋值运算符函数	
}; 	
CDeepCopy::~CDeepCopy()	
{  	static int s_num=1;		cout<<s_num++<<" .~CDeepCopy()\n"; 	delete [] p;  }
CDeepCopy::CDeepCopy(int k) { n=k; p=new int[n]; } //构造函数实现
CDeepCopy& CDeepCopy::operator=(const CDeepCopy& r)  //赋值运算符函数实现   
{	if(n!=r.n) 						//两个数组长度不一致时
	{ 	delete [] p;					//释放原来的数组空间
		n=r.n;		                   //设置两个数组长度相等
		p=new int[n];                    //建立与源数组等长的独立数组
	}								//确保目标数组拥有独立的资源
	memcpy(p,r.p,n*sizeof(int));		//拷贝动态资源的物理数据 
	return *this;						//返回物理数据一致的当前对象
}	
CDeepCopy::CDeepCopy(const CDeepCopy& r)  //拷贝构造函数
{  	n=r.n;							//当前数组维数等于源数组维数
	p=new int[n];						//建立独立的内存资源
 	memcpy(p,r.p,n*sizeof(int));		//物理数据全盘拷贝
}
int main()
{	CDeepCopy a(2),d(3);
	a.p[0]=1;  d.p[0]=666; 				//对象a,d数组元素的赋值
	{  	CDeepCopy b(d);  				//调用拷贝构造函数
        a.p[0]=88;		b=a;        		//调用赋值运算符函数
        cout<<b.p[0];   				//显示内层局部对象的数组元素  
	}  
    cout<<d.p[0];                    		//显示d数组元素a.p[0]的值
	cout<<" d fade away;\n";  cout<<a.p[0];  //显示a数组元素a.p[0]的值
	return 0;
}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -