在Java中,静态变量只实例化一次,其行为类似于全局变量。
在效率和速度方面,有没有办法在C ++中实现这一点? 由于静态,在C ++中,块不存在。
如果有一个像Foo = 17这样的常量,并且我正在创建该类的多个实例,那么如何保持常量不被多次实例化呢?
同样的语法是否也适用于结构?
答案 0 :(得分:1)
它的工作方式相同。您可能有一个函数,您想要跟踪函数在整个程序生命周期中被调用的次数,这很简单......
int foo()
{
static int times = 0;
...
return times;
}
相当无意义,但它仍然是你所描述的。你可以在课堂上做同样的事情。
class myClass
{
public:
static int many;
...
int getMany() { return many; }
};
此处函数始终返回存在的实例数。
答案 1 :(得分:1)
您可以在c / c ++中使用相同的关键字,即static
请参阅msdn文档here。
static关键字可用于声明变量,函数,类 数据成员和类函数。默认情况下,对象或变量 在所有块之外定义的具有静态持续时间和外部 连锁。静态持续时间表示对象或变量 在程序启动时分配,并在程序时解除分配 结束。外部链接意味着变量的名称是可见的 从声明变量的文件外部。反过来, 内部链接意味着该名称在文件外部不可见 其中声明了变量。