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

  • 实现的功能:
    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;
}

猜你喜欢

转载自blog.csdn.net/qq_47329614/article/details/106963139