C++—设计实现一个存储任意类型元素的动态数组类模板Array

本文展示了一个C++实现的动态数组类模板Array,该模板实现了动态内存分配,构造函数,复制构造函数,重载了下标运算符[]、等于运算符==、输入运算符>>和输出运算符<<。并提供了测试程序来验证这些功能的正确性。
摘要由CSDN通过智能技术生成

题目:设计实现一个存储任意类型元素的动态数组类模板Array,要求如下:

(1)存放数组元素的空间动态申请,定义成员函数时不得造成内存泄露;

(2)定义构造函数和复制构造函数;

(3)重载下标运算符[ ]、关系运算符==;

(4)重载输入运算符>>,输出运算符<<;

(5)编写测试程序,对以上所有功能进行测试。

 代码实现:

#include<iostream>
using namespace std;

template<typename T>
class Array{
	private:
		int size;
		T *data=NULL;
	public:
		Array<T>(int len,T*a){//构造函数 
			size=len;
			data=new T[size];
			if(a){
				for(int i=0;i<size;i++){
					data[i]=a[i];
				}
			}
		}
		Array<T>(const Array<T> &rhs){//复制构造函数 
			size = rhs.size;
			data = new T[size];
			for(int i=0;i<size;i++){
				data[i] = rhs.data[i];
			}
		}
		T operator[](int index){//重载[]运算符 
			return data[index]; 
		}
		
		int operator==(const Array<T> &rhs){//重载==运算符
			for(int i=0;i<size;i++){
				if(data[i]!=rhs.data[i]){
					return 0;
				}
			}
			return 1;
		}
		friend ostream& operator<<(ostream &os,const Array<T> &rhs){//重载输出运算符<< 
			for(int i=0;i<rhs.size;i++){
				os<<rhs.data[i]<<"  "; 
			}
			os<<endl;
			return os;
		}
		friend istream& operator>>(istream &is,Array<T> &rhs){//重载输入运算符>> 
			for(int i=0;i<rhs.size;i++){
				is>>rhs.data[i]; 
			}
			return is;
		}
		
};

int main(){
	int a[6]={1,2,3,4,5,6};
	//测试构造函数 
	Array<int> A(6,a);
	
	//测试复制构造函数 
	Array<int> B(A);
	
	//测试重载的输出运算符<<
	cout<<A<<endl;
	cout<<B<<endl;
	
	//测试重载的下标运算符[]
	cout<<"对象A的第六个元素为:" ;
	cout<<(A[5])<<endl;
	
	//测试关系运算符== 
	if(A==B){
		cout<<"A==B"<<endl;;
	}
	
	int n;
	cout<<"您要输入的元素的个数为:";
	cin>>n;
	Array<int> C(n,NULL);
	cout<<"请输入您要输入的"<<n<<"个元素:"<<endl;
	
	//测试重载的输入运算符>>
	cin>>C;
	cout<<C<<endl;
	return 0;
}

运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值