请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.cpp,其中定义了MyString类。MyString是一个用于表示字符串的类,其构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该

admin2015-06-27  26

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.cpp,其中定义了MyString类。MyString是一个用于表示字符串的类,其构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该数组中;成员函数reverse的功能是对字符串进行反转操作,例如,字符串“ABCDE”经过反转操作后,会变为“EDCBA”;成员函数print的作用是将字符串输出到屏幕上。
请在横线处填写适当的代码并删除横线,以实现MyString类的功能。此程序的正确输出结果应为:
Beforereverse:
abc
de%
Afterreverse:
Cha
gfed
注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
//proj2.cpp
#include
usingnamespacestd;
classMyString{
public:
MyString(constchar*s)
{
//**********found**********
mstr=newchar[________];
strcpy(m_str,s);
}
~MyString()
{
//**********found**********
________;?
}
voidreverse()
{
intn:strlen(m_str);
for(inti=0;iinttmp=m_str
//**********found**********
mstr=________;
//**********found**********
________;
  }
}
voidprint()
{
cout<}
//其他成员…
private:
char*mstr;
};
intmain(intargc,char*argv[])
{
MyStringstr1(”abc”),str2("
defg");
cout<<"Beforereverse:\n";
str1.print();
str2.print();
str1.reverse();
str2.reverse();
cout<<"Afterreverse:\n";
str1.print();
str2.print();
return0;
}

选项

答案(1)strlen(s) + 1 (2)delete []m_str (3)m_str[n-i-1] (4)m_str[n-i-1] = tmp

解析 (1)考查使用new语句动态分配内存空间,要分配空间大小应为字符串的长度加1。
(2)主要考查考生对析构函数的掌握,析构函数使用delete语句释放指针。
(3)和(4)主要考查考生对成员函数的掌握,这里是一个变量交换操作,通过中间变量tmp交换。
转载请注明原文地址:https://kaotiyun.com/show/LmBD777K
0

最新回复(0)