Effetive C++条項4
1725 ワード
オブジェクトが使用される前に初期化されていることを確認
プログラムで初期化されていないデータ・メンバーが使用されている場合、プログラムに予想外のエラー結果が発生することがわかります.このセクションでは、初期化方法について説明します.
まず
classの場合、その初期化はメンバー初期化カラムを使用して行われ、コンストラクション関数のいわゆる「初期化」は割り当てられます.以下に,前者は初期化後付与,後者は直接初期化である.
に続く
non-local staiticオブジェクトの場合、オブジェクトが初期化されているかどうかは不明ですので、使用するたびに直接再定義して初期化します.
プログラムで初期化されていないデータ・メンバーが使用されている場合、プログラムに予想外のエラー結果が発生することがわかります.このセクションでは、初期化方法について説明します.
まず
classの場合、その初期化はメンバー初期化カラムを使用して行われ、コンストラクション関数のいわゆる「初期化」は割り当てられます.以下に,前者は初期化後付与,後者は直接初期化である.
class P{
public:
P(int x0, int y0)
{
x=x0;
y=y0;
}
private:
int x,y;
}
class P{
public:
P(int x0, int y0):x(x0),y(y0)
{
x=x0;
y=y0;
}
private:
int x,y;
}
に続く
non-local staiticオブジェクトの場合、オブジェクトが初期化されているかどうかは不明ですので、使用するたびに直接再定義して初期化します.
class FileSystem{
public:
……
std::size_t numDisks()const;
……
};
FileSystem& tfs()
{
static FileSystem fs;
return fs;
}
class Directory{
public:
Directory( params )
{
……
std::size_t disks=tfs.numDisks();
……
}
};
Directory tempDir()
{
static Directory td;
return td;
}