版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Fiverya/article/details/88884611
定义一个基类BaseString,实现基本的输入字符串的功能。再分别定义三个派生类,要求如下: 1.定义一个ReString类,公有继承基类BaseString,实现字符串的倒置功能。如,将字符串“1234abcd”,倒置后这“dcba4321”。 2.定义一个CopyString类,公有继承基类BaseString,实现字符串的复制功能。 3.定义一个CmpString类,私有继承基类BaseString,实现字符串的比较功能。 基类BaseString部分定义如下: class BaseString { char *Chstr; int Length; public: BaseString(char *s); char *GetString(); int GetLength(); }; 测试用例说明: 1.输入第一行是ReString类数据,用于数据倒置; 2.输入第二行是CopyString类数据,用于数据复制; 3.输入第三、四行是CmpString类数据,用于两个字符串比较,输出比较结果。
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
class BaseString
{
char *Chstr;
int Length;
public:
char*s;
BaseString(char *s){Chstr=s;Length=strlen(s);}
char *GetString() {return Chstr;}
int GetLength() {return Length;}
};
class ReString:public BaseString
{
char b[20],*p;
public:
ReString(char a[20]):BaseString(a)
{p=GetString();}
void re()
{for(int i=1;i<GetLength()+1;i++)
{b[GetLength()-i]=*p;
p++;
}
b[GetLength()]='\0';
cout<<"倒序输出:"<<b<<endl;
}
};
class CopyString:public BaseString
{
char *p;
public:
CopyString(char a[20]):BaseString(a){p=GetString();}
void Copy()
{cout<<"复制输出:"<<p<<endl;}
};
class CmpString:private BaseString
{
char *q,*p;
public:
CmpString(char a[20],char b[20]):BaseString(a)
{p=GetString();q=b;}
void cmp()
{
if(strcmp(p,q)==0)
cout<<"判断结果:两字符串相等。"<<endl;
else
cout<<"判断结果:两字符串不相等。"<<endl;
}
};
int main()
{ char str1[20],str2[20],str3[20],str4[20];
gets(str1);
cin>>str2>>str3>>str4;
ReString st11(str1);
st11.re();
CopyString st22(str2);
st22.Copy();
CmpString st33(str3,str4);
st33.cmp();
return 0;
}