C ++ - 从std :: string类派生类来添加额外的函数?

时间:2015-05-04 11:47:49

标签: c++

首先,我知道std::string类具有我可能需要的所有功能。这仅用于测试目的,以了解我将来能够做些什么。

反正 说我有这个:

class MyString : public std::string { }

例如,我如何使用:

MyString varName = "whatever";

因为我肯定会收到错误,因为“what”是一个std :: string而不是MyString类的成员?

如果您理解我的意思,我该如何解决这个问题?

(顺便说一句,我知道这可能是一个非常愚蠢的问题,但我很好奇)

1 个答案:

答案 0 :(得分:7)

从类中派生只是为了添加成员函数并不是一个好主意;特别是像std::string这样的非多态类。相反,编写非成员函数以使用现有的字符串类执行任何操作。

如果你真的想这样做,你可以继承构造函数:

class MyString : public std::string {
public:
    using std::string::string;
};

现在,您可以以任何可以初始化std::string的方式初始化您的类,包括从示例中的字符数组转换。 (顺便说一句,"whatever"不是std::string,它是一个以零结尾的字符数组const char[9]。)