使用C 定义一个类 ReString,公有继承自 BaseString,添加一个函数 Reverse()实 现字符串的倒置功能,即:将对象中的数据成员 Data 数组的元素倒置。倒置的概 念是:原字符串为“abcd1234”,倒置后为“4321dcba”。
时间: 2023-07-15 08:12:41 浏览: 43
以下是一个简单的实现:
```c
#include <string.h>
// 基类
struct BaseString {
char* Data;
int Length;
};
// 派生类
struct ReString : public BaseString {
// 构造函数
ReString(char* data, int length) {
Data = new char[length];
memcpy(Data, data, length);
Length = length;
}
// 析构函数
~ReString() {
delete []Data;
}
// 倒置函数
void Reverse() {
int i, j;
char temp;
for (i = 0, j = Length - 1; i < j; i++, j--) {
temp = Data[i];
Data[i] = Data[j];
Data[j] = temp;
}
}
};
```
在上面的代码中,我们定义了一个基类 `BaseString`,它包含了一个 `Data` 字符数组和一个 `Length` 整数。然后,我们定义了一个派生类 `ReString`,它公有继承自 `BaseString`,并添加了一个 `Reverse()` 函数,用于字符串的倒置。
在 `Reverse()` 函数中,我们使用了两个指针 `i` 和 `j`,分别指向字符串的开头和结尾。然后,我们交换 `i` 和 `j` 指向的字符,直到 `i` 大于或等于 `j`。这样,我们就完成了字符串的倒置。
使用示例:
```c
#include <stdio.h>
int main() {
char data[] = "abcd1234";
ReString str(data, strlen(data));
printf("Original string: %s\n", str.Data);
str.Reverse();
printf("Reversed string: %s\n", str.Data);
return 0;
}
```