c++ラーニング-->解析関数

879 ワード

構造関数は、構造関数とは逆に、オブジェクトが取り消されたときに自動的に呼び出され、メンバーを取り消すときにnewまたはmallocを使用して申請されたメモリ領域を手動で解放するなど、いくつかのクリーンアップ作業に使用されます.構造関数には、■構造関数の関数名はクラス名と同じで、名前の前にくっついて波番号~と構造関数で区別します.例えば、~Point();■コンストラクション関数は戻りタイプもパラメータも指定できないため、コンストラクション関数は1つしかなく、再ロードできません.■オブジェクトが取り消されると、構造関数は自動的に呼び出され、構造関数とは異なり、構造関数は、オブジェクト内の動的申請のメモリを解放するために明示的に呼び出され得る.
ユーザが明示的に構造関数を定義していない場合、コンパイラはオブジェクトに対してデフォルトの構造関数を生成しますが、デフォルトで生成された構造関数はクラスの通常のデータメンバーが占有する空間しか解放できません.newまたはmallocで申請する空間は解放できません.そのため、これらの申請の空間を明示的に定義する構造関数が必要になる場合があります.メモリの漏洩を避ける.
自然状態でオブジェクトがいつ破棄されるかは、オブジェクトの生存期間に依存します.たとえば、グローバルオブジェクトはプログラムの実行終了時に破棄され、自動オブジェクトはその役割ドメインを離れたときに破棄されます.
        
オブジェクト内の動的出願を解放するために構造関数を明示的に呼び出す必要がある場合は、オブジェクト名のみを使用する必要がある.構造関数名()たとえば、前述の例では、bookNameが指す空間を解放するために構造関数を明示的に呼び出します.
 CPP.~Book();