定义一个类ReString,共有继承自基类BaseString,实现字符串的倒置功能如原字符串为123倒置后为321

发布时间:2024-05-19 11:03 发布:上海旅游网

问题描述:

问题解答:

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

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

const char *GetString() { return buffer; }
int GetLength() { return length; }

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 ReString : public BaseString
{
public:
ReString() {}
ReString(const char *str) : BaseString(str) {}
ReString(const ReString &o) : BaseString(o.buffer) {}
char *Inverse();
};

// 返回的字串需要自己释放内存
char *ReString::Inverse()
{
char *ret = new char[length + 1];

for (int i = 0; i < length; ++i)
ret[i] = buffer[length - 1 - i];

ret[length] = '\0';
return ret;
}

int main()
{
ReString s1("Hello World");
char *inv = s1.Inverse();

cout << s1.GetString() << endl << inv << endl;

delete[] inv;

return 0;
}

热点新闻