クラスの基礎、作成者、消滅者

5737 ワード

📒 メンバー関数の外部定義

class A{
	public:
    int var;
	void getVar();
}
void A::getVar(){
	cout << var << endl;
}
クラスにメンバー関数が定義されている場合は、ローの関数になります.
クラスの外部でメンバー関数が定義されている場合、呼び出し方法は通常の関数と同じです.スタックにパラメータを格納し、戻りアドレスを保存し、メンバー関数への移動を制御します.
💡 UMLでは、メンバー変数または関数の横にある可視性インジケータ+がpublic、-privateを表します.
実線の中空の三角形の矢印は継承を表します.方向テーブルのクラスは親です.

✔ジェネレータから別のジェネレータを呼び出します。

  • ジェネレータは、通常、同様の初期化動作を実行するため、あるジェネレータから別のジェネレータを呼び出すことが多い.
  • class Car{
    	int speed;
        int gear;
    public:
    	Car(int a, int b){
        	speed = a;
            gear = b;
        }
        
        Car(int a){
        	Car(a,0); //요런식으루
        
        }
    💡 ジェネレータでダイナミックメモリ割り当てを行う場合は、必要に応じて消滅者を作成し、メモリを返します.

    📒 初期化リスト

    class Car{
    	int speed;
        int gear;
        const int MAX_SPEED;
        String& name;
    public:
    	Car(int a, int b, string c): speed(a), gear(b), MAX_SPEED(300), name(c){ //요런식으루
        	speed = a;
            gear = b;
        }
        
        Car(int a){
        	Car(a,0); 
        
        }

    ✔初期化リストを使用する必要があります!!


    1.メンバーが定数
    ex) Const int MAX_SPEED; 宣言した場合
    ここで値を指定すると、コンパイルエラー->オブジェクトが作成されません.
    2.メンバーがReferenceの場合
    宣言時に参照される変数を決定する必要があるためです.
    3.メンバーがオブジェクト
    AクラスがBクラスのオブジェクトをメンバー変数として含む場合.
    オブジェクトの作成時にジェネレータが呼び出されるため、AクラスからBクラスのジェネレータを呼び出すことはできません.
    デバッガジェネレータを呼び出さない場合は、初期化リストを使用する必要があります.