何时使用静态变量C++



我对static/global/global static/extern变量的用法有点困惑。

我希望在创建类实例时增加一个计数器变量。

如果有人能澄清每种药物的适当用法,我将不胜感激。

根据OO概念,您应该NEVER使用global static变量。您可以在class中为class的实例计数定义一个static变量。将其设为private,这样除了构造函数之外,其他任何人都无法增加计数。提供public函数来获取计数器。参见以下示例:

你的班级。h:

class YourClass {
private:
    static int instanceCount_;
public:
    YourClass() {++YourClass::instanceCount_;}  // constructor
    ~YourClass() {--YourClass::instanceCount_;} // destructor
    static int instanceCount() {return instanceCount_;}
};

yourclass.cpp:

int YourClass::instanceCount_ = 0;

static/global/global static/extern 的概念而言

  1. static

1a)global static:根据给定创建的静态变量:static int numberOfPersons;

这种变量只能在一个文件中看到(不会与其他文件中同名的其他变量发生名称冲突)

1b)class static:(上面的实例计数中已有一个实例)一个类可能有static成员,这些成员仅对该类可见(仅通过Class::VarName语法访问)(而不是如上所述的"仅文件")。它不会和其他类中同名的变量发生名称冲突。每个类(而不是每个实例)只有一个副本。

1c)global staticclass static都是global(因为它们可以全局访问,无论是否使用类限定符Class::

因此,1a。,1b。和1c。部分解释staticglobalglobal static

  1. 全局变量的另一种形式,就是定义一个没有static的变量
    语法:int numberOfPersons;

如果没有static,则其他文件可以使用extern关键字查看此变量。它将和其他文件中具有相同名称的变量发生名称冲突。因此,在全局范围内,您只能在所有源文件中定义它ONCE

  1. extern:声明在其他地方定义的变量/函数它通常出现在头文件中。我们可以在其他文件中定义一些变量,并在使用该变量的另一个源文件中将该变量声明为extern,如下所示
extern int numberOfPersons;
    int addPersonCount()
    {
         numberOfPersons++;
    }

希望这能有所帮助。

相关内容

  • 没有找到相关文章