-1

我正在阅读 C++ 中的思考。我对那本书中显示的以下代码片段感到困惑。

class MyString: public string, public Object {
public:
  ~MyString() {
    cout << "deleting string: " << *this << endl;
  }
  MyString(string s) : string(s) {}
};

我很困惑*thisthis是一个指向 MyString 对象本身的指针。为什么被*this取消引用为初始化字符串?为了让我的问题更清楚,我举一个例子:

Mystring* x = new string("Hello");
delete x;

我没有列出完整的代码。如果运行完整的代码,输出是:

删除字符串:你好。

这意味着 *this = "你好"。

4

2 回答 2

0

因为operator <<with的重载std::ostreamstd::string提取和打印字符串的c_str()表示,或者字符串本身。

于 2013-04-03T02:43:59.620 回答
0

这是指向当前对象的指针。*this 取消引用指向当前对象的指针,因为它是从字符串派生的字符串。然后调用重载的 osteram 运算符。

当您从和对象派生时,您创建的是与派生对象的关系。

也不要从 std 类派生,因为大多数没有虚拟析构函数。

于 2013-04-03T02:51:20.193 回答