如何只在C ++中实例化一次变量?

时间:2014-02-10 06:01:13

标签: c++ static

在Java中,静态变量只实例化一次,其行为类似于全局变量。

在效率和速度方面,有没有办法在C ++中实现这一点? 由于静态,在C ++中,块不存在。

如果有一个像Foo = 17这样的常量,并且我正在创建该类的多个实例,那么如何保持常量不被多次实例化呢?

同样的语法是否也适用于结构?

2 个答案:

答案 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关键字可用于声明变量,函数,类   数据成员和类函数。默认情况下,对象或变量   在所有块之外定义的具有静态持续时间和外部   连锁。静态持续时间表示对象或变量   在程序启动时分配,并在程序时解除分配   结束。外部链接意味着变量的名称是可见的   从声明变量的文件外部。反过来,   内部链接意味着该名称在文件外部不可见   其中声明了变量。