问答题
阅读下列程序说明和C++程序,把应填入其中(n)处的字句,写对应栏内。
【说明】
下面的程序实现了类String的构造函数、析构函数和赋值函数。
已知类String的原型为:
class String
{
public:
String(coust char * str = NULL); //普通构造函数
String( const String &other); //拷贝构造函数
~String(void); //析构函数
String & operate =(const String &other); //赋值函数
private:
char * m_data; // 用于保存字符串
};
//String 的析构函数
String:: ~String (void)
{
{{U}} (1) {{/U}};
}
//String 的普通构造函数
String: :String( const char * str)
{
if{{U}} (2) {{/U}}
{
m_data = new char[1];
*m_data = '/0';
}
else
{
int length = strlen(str);
m_data = new ehar[ length + 1 ];
strepy(m_data, str);
}
}
//拷贝的构造函数
String:: String( const String &other)
{ int length = strlen(other. m_data);
m_data = new char[ length + 1 ];
strepy(m_data, other, m_data); //赋值函数
String & String::operate = (eonst String &other) //
{
if {{U}}(3) {{/U}}
return * this;
delete [] m_clara; //释放原有的内存资源
int length = strlen( other, m_data);
m_data = new chart length + 1 ];
{{U}} (4) {{/U}};
return {{U}}(5) {{/U}};
}
问答题
【正确答案】
【答案解析】
问答题
【正确答案】
【答案解析】str==NULL [解析] 当传入参数为空时,则生成一个元素的字符数组,即‘/0’。
问答题
【正确答案】
【答案解析】this = =&other [解析] 检查自赋值,若this和&other相同,则直接返回*this。
问答题
【正确答案】
【答案解析】strcpy(m_ data,other. m_dara) [解析] 在分配新的内存资源后,将other内容复制到m_data。
问答题
【正确答案】
【答案解析】*this [解析] 返回本对象的引用。