首页 > 试题广场 >

假设String类有如下私有成员: class Strin

[问答题]
假设String类有如下私有成员:
class String
{
private:
      char * str;        // points to string allocated by new
      int len;            // holds length of string
//
};

a. 下述默认构造函数有什么问题?
String::String() []
b. 下述构造函数有什么问题?
String::String(const char * s)
{
     str = s;
     len = strlens(s);
}

c. 下述构造函数有什么问题?
String::String(const char * s)
{
      strcpy(str, s);
      len = strlen(s);
}

推荐
a. 语法是正确的,但该构造函数没有将str指针初始化。该构造函数应将指针设置成NUEL或使用new[ ]来初始化它。
b. 该构造函数没有创建新的字符串,而只是复制了原有字符串的地址。它应当使用new[ ]和strcpy()。
c. 它复制了字符串,但没有给它分配存储空间,应使用new char[len + 1]来分配适当数量的内存。
发表于 2018-05-02 20:36:36 回复(0)