0

編集:ループの繰り返しごとに1回ではなく、関数呼び出しごとにコンストラクターとデストラクタを呼び出すため、ループ本体の前にオブジェクトを宣言する方が効率的であることを私は知っています。この理由により、タイプ A のオブジェクトはループ本体の外側でより効率的であるとしましょう。

私は次のことを疑問に思っています

void foo()
{
    static A var;  //A is a class with a constructor
    ...   //stuff done with var
}

よりも効率的です

void foo()
{
    A var;   //A is a class with a constructor
    ...  //stuff done with var
}

前者は、foo の呼び出しごとに行う後者ではなく、A のコンストラクターとデストラクタを 1 回呼び出すためです。この質問は、一般的にすべてのローカル オブジェクトに対して行います。

4

3 に答える 3