问题描述:
问题解答:
#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;
}