您的位置:首页 > 编程语言 > C语言/C++

C++的纯虚函数和抽象类示例:创建一个动态数组,可以实现增加、删除、查找、计算长度、打印等功能

2020-06-25 22:23 106 查看
  • 实现的功能:
    1、创建一个动态数组,可以实现增任意个元素并且打印出来
    2、根据相应的索引,找到对应的元素,并打印出来
    3、根据索引,删除对应的元素
    4、在增加和删除后计算数组长度
#include <iostream>
#include <cstdio>

using namespace std;

class List{	//抽象类
public:
virtual void add(int dat)=0;
virtual int get(int index)=0;
virtual int size()=0;
virtual void display()=0;
virtual int remove (int index)=0;

virtual ~ List(){}
};

class arrayList : public List{
public:
arrayList(){
len=0;
ARRAY_SIZE=10;
dp =new int[ARRAY_SIZE];
}

void add(int dat){
if(len==ARRAY_SIZE){
addspace();
}
*(dp+len)=dat;
len++;
}

int get(int index){
if(index<0 || index>=len){
printf("index invalid!\n");
return 0;
}
return *(dp+index);
}

int size(){
return len;
}

void display(){
printf("\n=======================================\n");
printf("size:%d\n",len);
int i=0;
for(;i<len;i++){
printf("%5d",*(dp+i));
if((i+1)%10==0){
printf("\n");
}
}
printf("\n=======================================\n");
}

int remove(int index){
if(index<0||index>=len){
printf("index out of bonds exception!\n");
return -1;
}
int i=index;
for(;i+1<ARRAY_SIZE;i++){
dp[i]=dp[i+1];
}
len--;
return 0;
}

private:
int len;
int ARRAY_SIZE;
int *dp;

void addspace(){
int *tp=dp;
ARRAY_SIZE *=2;
dp=new int[ARRAY_SIZE];
int i=0;
for(;i<len;i++){
*(dp+i)=*(tp+i);
}
delete []tp;
}
};

int main(){
arrayList list;
int i=1;
for(;i<=200;i++){
list.add(i);
}
list.display();

list.remove(199);
list.display();

printf("\ninput index:\n");
int index;
cin >> index;
printf("the value is:%d\n",list.get(index));

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐