请使用菜单命令或:直接用VC6打开考生文件夹下的工程proj2,实现一个自定义的字符串类MyString,重载取下标操作符([]),使类的对象能够通过下标取字符串的某位元素。如果下标越界,则返回第一个元素的值。 请在程序中//**********f

admin2021-06-10  46

问题 请使用菜单命令或:直接用VC6打开考生文件夹下的工程proj2,实现一个自定义的字符串类MyString,重载取下标操作符([]),使类的对象能够通过下标取字符串的某位元素。如果下标越界,则返回第一个元素的值。
    请在程序中//**********found**********之下一行的横线处填写适当的代码,并删除横线,使程序完整、正确。
  输出结果为:
  s
  t
1  #include
2  #include
3  using namespace std;
4  class MyString
5  {
6  private:
7    char*str;
8   public:
9  MyString(char*s)
10  {
11    //**********found**********
12    str=new______;
13     strcpy(str,s);
14    }
15     ~MyString()
16    {
17    //**********found**********
18    ______;
19    }
20    char&operator[](int i);
21   };
22   char&MyString::operator[](int i)
23  {
24    //**********found**********
25    if(_____)
26    return str;
27    //**********found**********
28    return______;
29  }
30  int main()
31  {
32  MyString test("test string");
33  cout<34    cout<35    return 0;
36    }

选项

答案(1)char[strlen(s)+1] (2)delete[]str (3)i
解析 (1)主要考查构造函数中成员变量的赋值、动态内存的分配和字符串长度函数的使用,成员变量str是字符串指针,赋值时使用new[]分配内存空间,为了存放字符串尾部的空字符,需要分配的容量为字符串str长度+1,另外使用strlen获取str的长度。
    (2)主要考查考生对析构函数定义的掌握和动态内存的释放,MyString类的成员str是在构造函数中使用new[]分配的,所以在析构函数中需要使用delete[]释放。
    (3)主要考查考生对字符串库函数调用的掌握,使用strlen获取str的长度,判断下标i是否越界。
    (4)如果下标i越界,根据题意返回第一个元素str[0]。
转载请注明原文地址:https://kaotiyun.com/show/Ccfp777K
0

最新回复(0)