试定义CString和CString的子类CString2(可对CString声明做少量调整),CString,CString2声明如下:
class CString
{
char *str; //字符串
public:
CString(); //构造函数
CString(const char s[]); //构造函数
CString(CString&t); //拷贝构造函数
~CString();
int Set(const char s[]); //
void Print(); //输出
};
class CString2 :public CString
{
public:
CString2(); //构造函数
CString2(const char s[]); //构造函数
CString2(CString2& t); //拷贝构造函数
CString2 &Cat(CString2&t); //字符串连接
int Cmp(CString2& t); //字符串比较
};
在如下主函数中对该类进行测试。
int main() {
char s0[100], s1[100];
cin >> s0 >> s1;
CString2 cs0(s0),cs1(cs0);
cs0.Set(s1);
cout << cs0.Cmp(cs1) << endl;
CString2 &t=cs0.Cat(cs1);
t.Print();
return 0;
}
输入输出示意如下:
ASDF BSDF
1
BSDFASDF
请在答题窗口录入编写的完整程序。
#pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
#include <iostream>
#include <string.h>
using namespace std;
class CString {
public:
char *str; //字符串
public:
CString(); //构造函数
CString(const char s[]); //构造函数
CString(CString& t); //拷贝构造函数
~CString();
int Set(const char s[]); //
void Print(); //输出
};
class CString2 :public CString {
public:
CString2(); //构造函数
CString2(const char s[]); //构造函数
CString2(CString2& t); //拷贝构造函数
CString2& Cat(CString2& t);//字符串连接
int Cmp(CString2& t); //字符串比较
};
CString::CString() {
str=NULL;
}
CString::CString(const char s[]) {
str=(char *)s;
}
CString::CString(CString& t) {
str=t.str;
}
CString::~CString() {
str=NULL;
}
int CString::Set(const char s[]) {
str=(char *)s;
return 0;
}
void CString::Print() {
cout << str;
}
CString2::CString2() {
str=NULL;
}
CString2::CString2(const char s[]) {
str=(char *)s;
}
CString2::CString2(CString2& t) {
str=(char *)(t.str);
}
CString2& CString2::Cat(CString2& t) {
str=strcat(str,t.str);
return *this;
}
int CString2::Cmp(CString2& t) {
int r=strcmp(str,t.str);
if (r!=0) r=1;
return r;
}
int main() {
char s0[100], s1[100];
cin >> s0 >> s1;
CString2 cs0(s0),cs1(cs0);
cs0.Set(s1);
cout << cs0.Cmp(cs1) << endl;
CString2 &t=cs0.Cat(cs1);
t.Print();
return 0;
}
//输入
//ASDF BSDF
//输出
//1
//BSDFASDF