将常量局部变量定义为静态(c++)有什么优点和缺点?

T M*_*T M -1 c++ c++11 c++14 c++17

void Animation::playAnimation() const
{
    static const int index = 0;
    const std::string& animationFileName = m_animationContainer.getAnimationName(index);
    static const int zOrder = -1;
    static bool isLooping = false;

    AnimationBank::play(animationFileName,
                        zOrder,
                        isLooping);
}
Run Code Online (Sandbox Code Playgroud)

将常量局部变量定义为静态的优点和缺点是什么?将index, zOrder,定义为 的开销是多少。这样做有什么好处吗?isLoopingstatic

use*_*670 5

一般情况下,如果您在函数内部声明静态变量,那么它将在首次使用时初始化。为了实现此行为,编译器将创建另一个布尔类型的全局静态变量。初始设置为,相关静态变量初始化后再false设置为。true

在您的情况下,没有必要将任何变量声明为静态。