从字符串派生的类

时间:2015-04-27 07:41:36

标签: c++ string class derived

我遇到了问题,我不确定从哪里开始。

  

在这个程序中,您将创建一个名为mystring的类,该类派生自类   串。类mystring应包括:

     
      
  • 私有数据成员id,它是一个整数,表示字符串的ID(请参阅函数main()中的示例)。

  •   
  • 一个公共方法,构造函数mystring(int,char *),它有两个   参数:整数(int)和字符串(char *)。它应该(1)调用基类   构造函数使用字符串参数(char *)和(2)赋值整数参数(int)   致id。

  •   
  • 一个公共方法int getid(),它返回类mystring的id。

  •   

到目前为止我所拥有的是什么

class mystring : public string
{
  private:
    int id;
  public:
    mystring(int id, char *words);
    int getid();
};

mystring::mystring(int id, char *words)
{
  string a (words);
  this->id = id;
}

int mystring::getid()
{
  return id;
}

// If your class is implemented correctly, the main program should work as
//the followings
int main()
{
  mystring x(101, "Hello Kitty");   // “hello Kitty” has an ID 101
  cout << x.getid() << endl;            //display 101
  cout << x << endl;                    //display string value: “Hello Kitty”
  cout << x.length() << endl;       //display length of the string: 11
  return 0;
}

我得到了这个

101

0

1 个答案:

答案 0 :(得分:2)

在你的构造函数中,你没有为你的实例调用std::string基础构造函数,你只是创建一个本地字符串,然后把它扔掉。

改变这个:

mystring::mystring(int id, char *words)
{
    string a (words); //creates a local string called a
    this->id = id;    //initializes id
}

使用初始化列表,如下所示:

mystring::mystring(int id, char *words) :
    string(words), //calls the string base constructor
    id(id)         //initializes id
{}