【发布时间】:2009-02-17 05:28:43
【问题描述】:
什么时候做
#include <string>
class MyString : public std::string
{
public:
MyString() {}
};
但是下面的用法:
MyString s = "Happy day";
MyString s("Happy Day");
MyString s = (MyString)"Happy day";
它们都不起作用。
似乎与构造函数/运算符声明/覆盖有关,但谁能帮忙指出我在哪里可以找到这些资源?
谢谢。
【问题讨论】:
-
当你继承时,你隐藏了基类的非默认构造函数。如果要调用这些构造函数,则必须在调用它们的子类中定义非默认构造函数。
-
你不应该从 std::string 继承。您可以通过它没有虚拟析构函数的事实来判断这一点。你正在向许多潜在的问题敞开心扉。使 std::string 成为成员。