C ++共用体のメンバー変数である文字列オブジェクトを削除するにはどうすればよいですか?

女性

ユニオンでコンストラクタとデストラクタを読んでいたときに、スタックオーバーフローの質問に出くわしました。ユニオンメンバーのデストラクタが呼び出されましたか

その質問に対する受け入れられた答えは、文字列オブジェクトのデストラクタを明示的に提供する必要があるということです。ただし、C ++文字列オブジェクト削除するという一般的な回答については、文字列オブジェクトを明示的に削除しないでください。文字列がスコープ外になると、デストラクタが自動的に呼び出され、メモリが解放されます。

これら2つは矛盾しています。必要な場合でも、文字列を削除する方法を教えてください。また、どのオブジェクトを明示的に削除する必要がありますか?

仕様によると、ユニオンの非静的データメンバーに重要なデフォルトコンストラクター(12.1)、コピーコンストラクター(12.8)、ムーブコンストラクター(12.8)、コピー代入演算子(12.8)、ムーブ代入演算子(12.8)がある場合、またはデストラクタ(12.4)の場合、ユニオンの対応するメンバー関数はユーザーが指定する必要があります。そうしないと、ユニオンに対して暗黙的に削除されます(8.4.3)。しかし、重要とはどういう意味ですか?

NathanOliver

些細なコンストラクタ/デストラクタは何もしないものです。基本的に、あなたの破壊者が次のように見える場合

~Type() {}

それからそれは些細なことです。std::stringのデストラクタはそのように空ではありません。文字列が割り当てた可能性のあるメモリをクリーンアップする必要があります。

したがって、ユニオンのデストラクタは何もしませんが、std::string何かをする必要があるため(そうしないと、メモリリークが発生します)、文字列のデストラクタを呼び出すユニオンのデストラクタを指定して、正しくクリーンアップする必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コンストラクターでC ++オブジェクトメンバー変数を初期化するにはどうすればよいですか?

分類Dev

C ++のオブジェクトの配列からデータメンバーの配列を取得するにはどうすればよいですか?

分類Dev

Cの関数呼び出し間で共用体メンバーの値を保持するにはどうすればよいですか?

分類Dev

Cの文字列変数にトークンを追加するにはどうすればよいですか?

分類Dev

文字列配列の値をC#でオブジェクトに変換するにはどうすればよいですか?

分類Dev

このクラスオブジェクトを削除するにはどうすればよいですか?(C ++)

分類Dev

C ++でオブジェクトの値型を変更するにはどうすればよいですか?

分類Dev

Cでオブジェクトの配列を作成するにはどうすればよいですか?

分類Dev

C#で2Dオブジェクト配列を2D文字列配列に変換するにはどうすればよいですか?

分類Dev

C ++でパラメーター化されたオブジェクトの配列を作成するにはどうすればよいですか?

分類Dev

Objective Cオブジェクトインスタンスを文字列としてエンコードするにはどうすればよいですか?

分類Dev

C#:非静的メンバーを使用してオブジェクトにアクセスするにはどうすればよいですか?

分類Dev

C ++でLPCTSTRオブジェクトを変更するにはどうすればよいですか?

分類Dev

org.w3c.dom.Documentオブジェクトを文字列に変換するにはどうすればよいですか?

分類Dev

C#配列の要素であるオブジェクトの属性を比較するにはどうすればよいですか?

分類Dev

C#で文字列の代わりに定義済みオブジェクトを使用するにはどうすればよいですか?

分類Dev

C#:オブジェクトを配列に追加するにはどうすればよいですか?

分類Dev

JSONを使用してC#オブジェクトをJavascript配列の配列に変換するにはどうすればよいですか?

分類Dev

C ++でオブジェクトのプライベートデータメンバーの変更を制限するにはどうすればよいですか?

分類Dev

C ++オブジェクトが配列内にあるかどうかを確認するにはどうすればよいですか?

分類Dev

このJSONでC#オブジェクトを作成するにはどうすればよいですか

分類Dev

C#でオープンジェネリックの型パラメーターの数を取得するにはどうすればよいですか?

分類Dev

オブジェクトの配列の内容をC ++の別の配列にコピーするにはどうすればよいですか?

分類Dev

既存のオーバーロードされたマッピング関数を使用して、ClassAのリストをClassBに変換するジェネリック関数を作成するにはどうすればよいですか。(C#)

分類Dev

C ++でconstオブジェクトを宣言するには、ユーザー定義のデフォルトコンストラクターが必要です。可変メンバー変数がある場合は、どうしてですか?

分類Dev

C#でオブジェクトパラメータがnullの場合、独自の例外を作成するにはどうすればよいですか?

分類Dev

PythonブールオブジェクトをCint(またはC ++ブール)に変換するにはどうすればよいですか(Python C API)

分類Dev

wpfのあるウィンドウから別のウィンドウの別のコントロールにオブジェクトをバインドするにはどうすればよいですか?(c#)

分類Dev

Unity3dでC#コンポーネントをあるゲームオブジェクトから別のゲームオブジェクトに渡すにはどうすればよいですか?

Related 関連記事

  1. 1

    コンストラクターでC ++オブジェクトメンバー変数を初期化するにはどうすればよいですか?

  2. 2

    C ++のオブジェクトの配列からデータメンバーの配列を取得するにはどうすればよいですか?

  3. 3

    Cの関数呼び出し間で共用体メンバーの値を保持するにはどうすればよいですか?

  4. 4

    Cの文字列変数にトークンを追加するにはどうすればよいですか?

  5. 5

    文字列配列の値をC#でオブジェクトに変換するにはどうすればよいですか?

  6. 6

    このクラスオブジェクトを削除するにはどうすればよいですか?(C ++)

  7. 7

    C ++でオブジェクトの値型を変更するにはどうすればよいですか?

  8. 8

    Cでオブジェクトの配列を作成するにはどうすればよいですか?

  9. 9

    C#で2Dオブジェクト配列を2D文字列配列に変換するにはどうすればよいですか?

  10. 10

    C ++でパラメーター化されたオブジェクトの配列を作成するにはどうすればよいですか?

  11. 11

    Objective Cオブジェクトインスタンスを文字列としてエンコードするにはどうすればよいですか?

  12. 12

    C#:非静的メンバーを使用してオブジェクトにアクセスするにはどうすればよいですか?

  13. 13

    C ++でLPCTSTRオブジェクトを変更するにはどうすればよいですか?

  14. 14

    org.w3c.dom.Documentオブジェクトを文字列に変換するにはどうすればよいですか?

  15. 15

    C#配列の要素であるオブジェクトの属性を比較するにはどうすればよいですか?

  16. 16

    C#で文字列の代わりに定義済みオブジェクトを使用するにはどうすればよいですか?

  17. 17

    C#:オブジェクトを配列に追加するにはどうすればよいですか?

  18. 18

    JSONを使用してC#オブジェクトをJavascript配列の配列に変換するにはどうすればよいですか?

  19. 19

    C ++でオブジェクトのプライベートデータメンバーの変更を制限するにはどうすればよいですか?

  20. 20

    C ++オブジェクトが配列内にあるかどうかを確認するにはどうすればよいですか?

  21. 21

    このJSONでC#オブジェクトを作成するにはどうすればよいですか

  22. 22

    C#でオープンジェネリックの型パラメーターの数を取得するにはどうすればよいですか?

  23. 23

    オブジェクトの配列の内容をC ++の別の配列にコピーするにはどうすればよいですか?

  24. 24

    既存のオーバーロードされたマッピング関数を使用して、ClassAのリストをClassBに変換するジェネリック関数を作成するにはどうすればよいですか。(C#)

  25. 25

    C ++でconstオブジェクトを宣言するには、ユーザー定義のデフォルトコンストラクターが必要です。可変メンバー変数がある場合は、どうしてですか?

  26. 26

    C#でオブジェクトパラメータがnullの場合、独自の例外を作成するにはどうすればよいですか?

  27. 27

    PythonブールオブジェクトをCint(またはC ++ブール)に変換するにはどうすればよいですか(Python C API)

  28. 28

    wpfのあるウィンドウから別のウィンドウの別のコントロールにオブジェクトをバインドするにはどうすればよいですか?(c#)

  29. 29

    Unity3dでC#コンポーネントをあるゲームオブジェクトから別のゲームオブジェクトに渡すにはどうすればよいですか?

ホットタグ

アーカイブ