2.(20分)设计并测试一个简单的整型数组类(IntArray)
(1)(15分)设计一个整型数组类,包含两个数据成员:int* base(数组元素的基地址),int
length(当前数组中的元素个数),类中包含如下主要成员函数和类的友元函数:
构造函数(用来初始化一个整型数组对象,默认元素个数为0);
拷贝构造函数;
析构函数;
添加一个新元素的函数addelement(int newdata),在原来数组的基础上,添加上一个值为newdata的新元素:
读取数组中指定下标的元素int getelement(int index) ;输出函数 printO,输出数组中的各个元素。
(2) (5分)请设计相应的测试程序。
#include <iostream>
using namespace std;
const int maxsize=1024;
class IntArray{
public:
//构造函数
IntArray(int *str,int n,int len=0){
base=new int[maxsize];
for(int i=0;i<n;i++){
base[i]=str[i];
}
length=n;
}
//拷贝构造函数
IntArray(const IntArray &p){
base = new int[maxsize];
for(int i=0;i<p.length;i++){
base[i]=p.base[i];
}
length=p.length;
}
//添加元素
bool addelement(int newdata){
if(length>=maxsize){
cout<<"数组已满"<<endl;
return false;
}
base[length]=newdata;
length++;
return true;
}
//读取指定下标元素
int getelement(int index){
if(index<0||index>=length){
cout<<index<<"下标不合法"<<endl;
return -1;
}else{
return base[index];
}
}
//输出函数
void print(){
cout<<"输出数组中的元素"<<endl;
for(int i=0;i<length;i++){
cout<<base[i]<<" ";
}
cout<<endl;
}
//析构函数
~IntArray(){
if(base != NULL){
cout<<"析构函数"<<endl;
delete[] base;
base=NULL;
}
length=0;
}
private:
int* base;
int length;
};
void test(){
int a[]={1,2,3,4,5,6,7,8,9,10};
IntArray arr(a,10,10);
arr.addelement(50);
arr.addelement(30);
arr.addelement(20);
arr.addelement(40);
arr.print();
int x=arr.getelement(11);
cout<<x<<endl;
int y=arr.getelement(14);
cout<<y<<endl;
IntArray arr2=arr;
arr2.print();
}
int main() {
test();
return 0;
}