方法调用中的静态变量

Sir*_*lot 5 c++ objective-c

如果在方法中创建局部静态变量,是每个实例初始化一次,还是每个程序初始化一次?

这在C++和Objective-C之间有区别吗?

bot*_*oto 6

请注意,在C++中,如果您的类或方法是"模板化",那么将为每个模板实例化创建一个自己的静态变量.例如,使用三种不同的模板参数类型会产生三种不同的静态变量


Mik*_*our 6

如果在方法中创建局部静态变量,是每个实例初始化一次,还是每个程序初始化一次?

每个程序一次.

即使它在非静态类成员函数中,它也不与任何类实例相关联; 在整个程序中只有一个变量实例,只初始化一次.

这在C++和Objective-C之间有区别吗?

在C++中,它是在第一次调用函数时初始化的.在C(和Objective-C)中,它在程序启动之前初始化.在实践中,这没有什么区别,因为初始化不能在C中产生任何副作用.