应用题
1. 请打开考生文件夹下的解决方案文件proj2,其中有向量基类VectorBase、向量类Vector和零向量类ZeroVector的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序正确输出结果应为:
(1,2,3,4,5)
(0,0,0,0,0,0)
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
using namespace std;
class VectorBase{//向量基类,一个抽象类
int len;
public:
VectorBase(int len):len (len){}
int length()const(return len;} //向量长度,即向量中元素的个数
virtual double getElement(int i)const=0;//取第i个元素的值
virtual douhle sum()const=0;//求所有元素的和
void show()const{//显示向量中所有元素
cout<<"(";
for(int i=0;i<length()-1; i++)
cout<<getElement(i)<<",";
//********found********
cout<<______<<")"<<endl;//显示最后一个元素
}
};
class Vector:public VectorBase{ //向量类
double *val;
public:
Vector(int len,double v[]=NULL):VectorBase(len){
val=new double[len];
for(int i=0;i<len;i++)
val[i]=(v==NULL?0.0:v[i]);
}
//********found********
~Vector(){______;}
double getElement(int index)const{return val[index];}
double sum()const{
double s=0.0;
//********found********
for(int i=0; i<length(); i++) ______;
return s;
}
};
class ZeroVector:public VectorBase{//零向量类
public:
ZeroVector(int len):VectorBase(len){}
//********found********
double getElement(int index)const{______;}
double sum()const{return 0.0;
}
};
int main(){
VectorBase *v;
double d[]={1,2,3,4,5};
V=new Vector(5,d);
v->show();
delete v;
v=new ZeroVector(6);
v->show();
delete v;
return 0;
}