5種類のC ++デフォルトコンストラクタ

クラスコンプレックス
{          
 
プライベートダブルm_real;
     ダブルは、m_imag 
 
公共
 
    // 1、引数なしのコンストラクタが
     // 、あなたが任意のコンストラクタを記述する必要はありませんクラスを作成した場合、システムが自動的に空のデフォルト引数なしのコンストラクタ関数を生成し、何もしない
     // 限り、あなたは、コンストラクタを次の特定の種類を記述するように、システムはもはや自動的なデフォルトコンストラクタを生成しません、あなたは、このような引数なしのコンストラクタを持つようにしたい場合は、あなた自身のショーを作成する必要がありますアウト 
    コンプレックス(ボイド
    { 
         m_real = 0.0 ; 
         m_imag = 0.0 ; 
    } 
         
    // 2、一般的なコンストラクタ(また、オーバーロードコンストラクタと呼ばれる)
     // 一般的なコンストラクタパラメータは様々な形態を有していてもよく、クラスは、一般構造を複数有することができます関数は、(多重定義関数のC ++の原理に基づいて)パラメータの異なる数またはタイプを提供
     //例えば:あなたは、複雑な(int型NUM)コンストラクタの書き出すことができます
     。// オブジェクトを作成するために、別のコンストラクタを呼び出すために渡された異なるパラメータに従って 
    コンプレックス(ダブル実、ダブルIMAG)
    { 
         m_real = ;実
         m_imag = IMAGを;          
     } 
     
    // 3、コピーコンストラクタ
     // 既存のオブジェクトに係るオブジェクトの新しいクラスを再生するため、クラスオブジェクト参照パラメータ自体のコンストラクタをコピーするには、オブジェクトの一般的なデータ・メンバーは既にする関数に存在し新しく作成されたオブジェクトへのコピーの値
     // コピーコンストラクタを書くためにディスプレイがない場合、システムはデフォルトのコピーコンストラクタを作成しますが、クラスメンバポインタがあるとき、システムはデフォルトのコピーコンストラクタを作成しますリスクは、「浅いコピー」、「ディープコピー」資料で説明に関連した具体的な理由から相談してください 
    コンプレックス(constのコンプレックス&C)を
    { 
        // cの値でオブジェクトのデータメンバはコピー 
        m_real = c.m_realを。
        m_img  = C.m_imgは; 
    }             
 
    // 4は、型変換コンストラクタは、指定されたタイプのオブジェクトに応じて、このオブジェクトのクラスを作成する
     // 例:複雑なオブジェクトタイプに基づいてオブジェクトを作成する二重 
    コンプレックス::コンプレックス(ダブルR&LT)
    { 
        m_real = R< 
        m_imag = 0.0 ; 
    } 
 
    // 5、オーバーロード等号演算子。
     // これはコピーコンストラクタと同様であることに注意してください、値をコピーする権利=対象オブジェクトクラス左オペランドによると、そうでありませんオブジェクトが作成されている必要があり、コンストラクタに属する、等号の左右にはされて
     // 何が表示書き込み=演算子のオーバーロードは、システムはまた、デフォルト=演算子のオーバーロードを作成する場合、唯一のいくつかの基本的な作業は、コピーしない 
    コンプレックス&演算子 =(ポーラ&コンプレックスRHS)
    { 
        // このオブジェクト自体場合、まず、本の右側は、オブジェクトの左側にあるかどうかを直接リターンを検出
        IFこの ==&RHS)
        { 
            返す * この; 
        } 
             
        // 被験体へコピー右側部材は左
        これを > m_real = - rhs.m_real;
         この - > m_imag = rhs.m_imag; 
             
        // 等号左のオブジェクトが再び来た
         // A = B = C = Cシステムの最初の実行は、B:目的は、接続や他の例を可能にするためである
         // 戻り値の=(= B、Cを実行し、これはC bの値の後にコピーする必要がありますがObject)を     
        復帰 * この; 
    } 
};

 

おすすめ

転載: www.cnblogs.com/judes/p/11547045.html