Effective C++ Item 42009年07月16日 22時23分11秒

  • 自らの手でしっかりと全ての変数を初期化する。
  • コンストラクタでは関数内で代入するのではなく初期化式を使う。
  • 非ローカル静的変数の初期化の順序は未定義なので、ローカル静的変数を用いて初期化を行なうように回避する。

初期化式は、関数の本体の前に並べる。以下の例で、青で示している部分だ。


class Person
{
    public:
        Person::Person(const std::string& aName, int anAge):
            name(aName),age(anAge){}
    private:
        std::string name;
        int age;
}

静的変数は同一ファイル内にあるものは先頭から順次初期化されていく。しかし、異なったファイルにある 静的変数がどの順序で初期化されていくのかは規定されていない。ローカル静的変数は最初に関数が呼ばれてた時に初期化される。

前回次回