//============================================================================
// 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;
}