第1章.c++に来たからには、c++の法則に従いましょう.

2176 ワード

プロジェクトオブジェクトを使用する前に、オブジェクトを初期化する必要があります。-メンバーを使用してリストを初期化します。


必ず頭文字Liserを使います
コンストラクション関数から代入するように初期化すると、コンストラクション関数スキャンに入る前に
データ型を継承するか、デバッガジェネレータを呼び出して初期化します.
しかし、顕微鏡内で口を初期化すると、放射対口が形成される.
逆に、メンバー初期化リストを使用すると、レプリケーション・ジェネレータが1回の呼び出しで関数の呼び出しを2回防止します.

  • これはデフォルトのデータ型です.入力した値が関係なくても、
    イニシャルライターで初期化しましょう

    ->パラメータは入力されていませんが、メンバー変数は頭文字で並べて初期化しましょう.

  • クラスのメンバー変数は、宣言された順序で初期化されます.
    初期化時に宣言された順序で初期化を行います.
  • イニシャルでログインする理由


    1)レプリケーションジェネレータを1回呼び出すだけで初期化できます.
    2)参照変数、定数変数であれば顕微鏡内で初期化できない.

    静的変数はいつ初期化されますか?


    :グローバル変数の静的状況では、初期化がいつ行われるか予測できません.
    たとえば、グローバル定義は静的クラスオブジェクトです.
    作成者がオブジェクトを参照すると言った場合、
    ジェネレータを呼び出す前に、グローバルオブジェクトを初期化する必要があります.
    呼び出し前に初期化が必要であることは保証されていません.
    c++はファイル単位でコンパイルされるため、初期化順序は決定されません.
    関数で定義された静的変数は、関数が最初に呼び出されたときに初期化される領域静的オブジェクトと呼ばれます.
    c++で保証されている事実.

    静的初期化の例


    に感銘を与える
    これまでグローバル変数はファイルの上部でしか使用されていませんでしたが、使用方法を変更します.
    
    #include <iostream>
    #include <string>
    #include <vector>
    
    class object
    {
    private :
    	int a;
    	double d;
    public : 
    	object()
    		: a{ 1004 }, d{0}
    	{}
    	int getNum()
    	{
    		return a;
    	}
    };
    
    object &callObj()
    {
    	static object o;
    	return o;
    }
    
    class wontae
    {
    public :
    	int data;
    public :
    	wontae()
    	{
    		data = callObj().getNum();
    	}
    };
    
    
    int main()
    {
    	wontae a;
    	std::cout << a.data << std::endl;
    
    	return 0;
    }
    

    ->グローバル変数をファイルの上部に配置するのではなく、リファレンスとして返される関数から
    静的を作成しましょう.
  • 前縁変数は、いつ初期化されるか分かりません.
  • を参照すると、静態はプログラム終了時に解除される.