1

デストラクタについていくつかの説明を使用できます。

オブジェクトに割り当てられたメモリへのポインタが含まれている場合、オブジェクトのデストラクタはdeleteそのポインタを呼び出す必要があることを理解しています。しかし、オブジェクトに、割り当てられたメモリへのポインタを含むオブジェクトが含まれている場合はどうなりますstringか?

class Foo
{
    string bar;
};

Foo* foo = new Foo;
delete foo;

char[]文字列の基になる部分の割り当てが解除されるようにするために、私がしなければならないことはありますか?

4

4 に答える 4

2

stringクラスデストラクタは、クリーンアップを担当します。あなたはそれについて心配する必要はありません。

于 2012-10-06T20:31:22.103 に答える
2

クラスが破棄されると、そのすべてのメンバー(-を含む)stringも自動的に破棄されます。

string(char配列は、他のクラスが依存してはならない実装の詳細である)によって保持されている内部リソースをクリーンアップすることは、stringオブジェクトのデストラクタの責任です。

于 2012-10-06T20:31:42.497 に答える
2

タイプのstringデストラクタは、所有するリソースをクリーンアップする責任があります。オブジェクトのデストラクタは、メンバーオブジェクトのデストラクタを呼び出します。

于 2012-10-06T20:31:55.490 に答える
1

ルールは次のように見ることができます。new を使用して作成する (および所有権を保持する) オブジェクトはすべてdelete、デストラクタを呼び出して破棄する必要があります。

于 2012-10-06T20:34:24.877 に答える