首先,我知道std::string
类具有我可能需要的所有功能。这仅用于测试目的,以了解我将来能够做些什么。
反正 说我有这个:
class MyString : public std::string { }
例如,我如何使用:
MyString varName = "whatever";
因为我肯定会收到错误,因为“what”是一个std :: string而不是MyString类的成员?
如果您理解我的意思,我该如何解决这个问题?
(顺便说一句,我知道这可能是一个非常愚蠢的问题,但我很好奇)
答案 0 :(得分:7)
从类中派生只是为了添加成员函数并不是一个好主意;特别是像std::string
这样的非多态类。相反,编写非成员函数以使用现有的字符串类执行任何操作。
如果你真的想这样做,你可以继承构造函数:
class MyString : public std::string {
public:
using std::string::string;
};
现在,您可以以任何可以初始化std::string
的方式初始化您的类,包括从示例中的字符数组转换。 (顺便说一句,"whatever"
不是std::string
,它是一个以零结尾的字符数组const char[9]
。)