实验13 多态(一)
【实验目的】
通过本实验,掌握类的继承与多态的概念。
【实验要求】
⑴熟练掌握类继承的不同方式。
⑵熟练掌握类的多态特性。
⑶熟练掌握虚函数的定义及使用方法。
【实验内容】
类S公有继承类String,类String的input()、output()函数、 get() 函数、 f() 函数为虚函数。
#include<iostream>
using namespace std;
class String{
private:
char *k;
public:
String(){ k=new char[100]; }
~String(){ delete []k; }
virtual void input(){ s(); cin>>k; }
virtual void output(){ cout<<"/""<<k<<"/""<<endl; }
virtual char *get(){return k;}
virtual void f(char *p);
inline void s()const{cout<<"Please input a string: ";}
void space(char *p);
};
void String::f(char *p){
char *q=p;
while(*p!='/0'){
if(*p>='a'&&*p<='z')*q++=*p;
p++;
}
*q='/0';
}
void String::space(char *p){
char *q=p;
while(*p!='/0'){
if(*p!=' ')*q++=*p;
p++;
}
*q='/0';
}
class S:public String{
private:
char *p;
public:
S(){ p=new char[100];}
~S(){ delete []p;}
void input(){ s(); cin>>p; }
void output(){ cout<<"/""<<p<<"/""<<endl; }
void f(char *p);
char *get(){return p;}
};
void S::f(char *p){
char *q=p;
while(*p!='/0'){
if(*p>='A'&&*p<='Z')*q++=*p;
p++;
}
*q='/0';
}
void fun(String &a){
a.space(a.get());
a.input();
a.f(a.get());
a.output();
}
int main(){
String a; fun(a);
S b; fun(b);
return 0;
}