模版类复制构造函数 C++实现

//============================================================================
// Name        : ClassWithCopyControll.cpp
// Author      : Lee
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
using namespace std;

template<typename T> class LeeCom{
private:
	T * data_array;
	unsigned size;
public:
	LeeCom():data_array(NULL),size(0){}
	LeeCom(T * arr,unsigned sz):data_array(arr),size(sz){
		data_array=new T[size];
		for(unsigned i=0;i<size;i++){
			data_array[i]=arr[i];
		}
	}
	LeeCom(LeeCom & lee);
	LeeCom operator=(LeeCom & lee);
	void view(){
		for(unsigned i=0;i<size;i++){
			cout <<data_array[i];
			cout<<endl;
		}
	}
	virtual ~ LeeCom(){
		if(data_array){
			delete[] data_array;
		}
	}
};
template<typename T> LeeCom<T>::LeeCom(LeeCom<T> & lee):data_array(NULL),size(lee.size){
	if(data_array!=NULL){
		delete[] data_array;
	}
	data_array=new T[lee.size];
	for(unsigned i=0;i<lee.size;i++){
		data_array[i]=lee.data_array[i];
	}

}
template<typename T> LeeCom<T> LeeCom<T>::operator =(LeeCom<T> & lee){
	if(this==&lee){
		return *this;
	}
	size=lee.size;
	if(data_array!=NULL){
		delete[] data_array;
	}
	data_array=new T[lee.size];
	for(unsigned i=0;i<lee.size;i++){
		data_array[i]=lee.data_array[i];
	}
	return *this;
}

int main() {
	cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
	int a[3]={2,1,3};

	LeeCom<int> leea(a,3);
	leea.view();
	LeeCom<int> leeb(leea);
	leeb.view();
	LeeCom<int> leec;
	leec=leea;
	leec.view();
	return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值