.定义一个类CmpString,私有继承自基类BaseString,实现字符串的比较功能。

发布时间:2024-05-20 05:41 发布:上海旅游网

问题描述:

问题解答:

#include <cstring>
#include <string>
#include <iostream>
using namespace std;

class BaseString
{
public:
BaseString()
{
length = 0;
buffer = NULL;
}
BaseString(const char *str);
~BaseString()
{
delete[] buffer;
}

protected:
char *buffer;
int length;
};

BaseString::BaseString(const char *str)
{
if (str && *str)
{
length = strlen(str);
buffer = new char[length + 1];
strcpy(buffer, str);
}
else
{
length = 0;
buffer = NULL;
}
}

class CmpString : private BaseString
{
public:
CmpString() {}
CmpString(const char *str) : BaseString(str) {}
CmpString(const CmpString &o) : BaseString(o.buffer)
{
}
CmpString & operator=(const CmpString &o)
{
if (this != &o)
{
delete[] buffer;
buffer = new char[o.length+1];
strcpy(buffer, o.buffer);
length = o.length;
}

return *this;
}
int Compare(const CmpString &o)
{
return strcmp(buffer, o.buffer);
}
};

int main()
{
CmpString s1("abcdef"), s2("abcdeg");
CmpString s3(s2);
CmpString s4 = s1;

int ret = s1.Compare(s2);

if (ret == 1)
cout << "s1 > s2" << endl;
else if (ret == -1)
cout << "s1 < s2" << endl;
else
cout << "s1 == s2" << endl;

ret = s3.Compare(s4);

if (ret == 1)
cout << "s3 > s4" << endl;
else if (ret == -1)
cout << "s3 < s4" << endl;
else
cout << "s3 == s4" << endl;

return 0;
}

热点新闻