C ++与字符串的继承

时间:2013-04-18 23:51:43

标签: c++ string inheritance

所以我在继承上发现了这个问题我试图弄明白。这就是所需要的:

  

创建一个名为strMetric的类,它将提供有关字符串的信息。您应该提供一个默认构造函数和一个以字符串作为参数的重载构造函数。

     

您的字符串指标类应具有以下功能

     

一个名为howLong的方法,它返回字符串的长度

     

一个名为vowelCnt的方法,它返回字符串中的元音数

     

一个名为charSum的方法,它返回字符串

中所有字符的总和      

一个名为upperCase的方法,它返回大写字符数

     

一个名为lowerCase的方法,它返回小写字符数

     

您将使用strMetric类作为派生类,并使用字符串类作为基类。

     

注:

     

不要创建自己的字符串类并从中派生。您将使用属于std命名空间并在

中定义的字符串类

我一直在努力解决这个问题,这就是我所拥有的,(现在我只研究其中的一种方法,直到我弄清楚如何正确地做到这一点)

//// strmetric.h ////

#ifndef STRMETRIC
#define STRMETRIC
#include <string>
using namespace std;

class strMetric : public string
{
private:

        public:
        strMetric();
        strMetric(string &s);
        int howLong(string s);
};
#endif

//// strmetric.cpp ////

#include "strmetric.h"

strMetric::strMetric()
    :string()
{
}
strMetric::strMetric(string &s)
    :string(s)
{
}

int strMetric::howLong(string s)
{ 
    return s.size();
}

///// main.cpp中////

#include <iostream>
#include "strmetric.h"

strMetric testRun("Hello There");

int main()
{

cout << "Here is the sentence being tested " << endl;
cout << endl;
cout << testRun << endl;
cout << endl;
cout << "String length " << endl;
cout << endl;
cout << testRun.length(testRun) << endl;
cout << endl;

}

我正是这样做的,还是我离开基地了?我很难理解这个问题。如果我做得不正确可能有人告诉我如何正确地做,我不需要整个事情,只是我开始的那一部分所以我可以很好地了解我应该做什么,谢谢!

1 个答案:

答案 0 :(得分:4)

除了std容器继承的一般好建议之外,更喜欢组合,你仍然没有做对:方法{{ 1}}(以及他们希望你定义的其他方法)应该对字符串本身进行操作,而不是对传入的字符串进行操作:

howLong

其余的方法也会做同样的事情 - 他们接受字符串参数,而是使用int howLong(); // no args int strMetric::howLong() { // Using "this" below is optional return this->size(); // remember, this *is* a string }

  

世界上如何使用此方法进行其他方法 - &gt;而不是在字符串参数中加载?

其余方法没有区别 - 只需将字符串放在您自己的对象中。我几乎可以肯定,学习如何做到这一点就是练习的重点。例如,要添加元音计数器,您可以执行以下操作:

this