-1

私はC ++で考えて読んでいます。その本に示されている次のコードの断片に混乱しています。

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

私は混乱してい*thisます。thisMyString オブジェクト自体を指すポインタです。*thisが初期化文字列として逆参照されるのはなぜですか? 私の質問をより明確にするために、例を挙げます:

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

完全なコードは記載しません。完全なコードを実行すると、出力は次のようになります。

文字列の削除: こんにちは。

これは *this = "こんにちは" を意味します。

4

2 に答える 2

0

operator <<withstd::ostreamとのオーバーロードは、文字列の表現または文字列自体をstd::string抽出して出力するためです。c_str()

于 2013-04-03T02:43:59.620 に答える