二、 下标运算符[ ]通常用于取数组中某个元素,可以实现数组下标越界的检测等。本题要求通过下标运算符的重载,实现读取数组中某个元素的作用。 它具有如下公有成员函数: 1. void Word (char *s ); 动态生成字符数组空间,用形参s来对其进行初始化。 2. char & operaror[ ](int n )给下标值为n的数组元素赋值。下标运算符[ ]的重载关键是将下标值做为一个操作数。它的实现非常简单,就是用字符指针的首地址str加下标值n,然后将相加后的地址返回。 3. void disp( ); 实现将字符指针str指向的字符串输出到屏幕上。 4. 用~ Word()析构函数来释放动态申请的堆空间。 私有数据成员: 1. * str; 该成员用于指向动态生成的字符数组空间。 主函数如下: void main( ){ char *s=”china”; Word w(s); w.disp( ); int n=strlen(s); while( n>0){ w[n-1]=w[n-1]+32; n--; } w.disp( ); } 运行结果: china CHINA
时间: 2024-02-20 12:02:29 浏览: 65
好的,这个类的实现如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class Word {
private:
char* str; // 指向动态生成的字符数组空间
public:
// 构造函数,动态生成字符数组空间
void Word(char* s) {
int len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
// 下标运算符[]重载,返回下标为n的数组元素的引用
char& operator[](int n) {
return str[n];
}
// 输出字符数组
void disp() {
cout << str << endl;
}
// 析构函数,释放动态申请的堆空间
~Word() {
delete[] str;
}
};
int main() {
char* s = "china";
Word w(s);
w.disp();
int n = strlen(s);
while (n > 0) {
w[n - 1] = w[n - 1] + 32; // 将下标为n-1的元素转换为小写字母
n--;
}
w.disp();
return 0;
}
```
运行结果为:
```
china
CHINA
```
这个程序中,我们首先用构造函数动态生成了字符数组空间,并将其初始化为形参`s`指向的字符串。下标运算符[]被重载为返回下标为`n`的数组元素的引用,这样我们可以使用类似数组的形式来访问和修改元素。`disp()`函数用于输出字符数组。最后,析构函数被用于释放动态申请的堆空间。在主函数中,我们首先输出了生成的字符数组,接着将其所有元素转换为小写字母,并再次输出。
阅读全文