宣布班级为整数


class test {
public:
    static int n;
    test () { n++; };
    ~test () { n--; };
};
int test::n=0; //<----what is this step called? how can a class be declared as an integer?
int main () {
    test a;
    test b[5]; // I'm not sure what is going on here..is it an array?
    test * c = new test;
    cout << a.n << endl;
    delete c;
    cout << test::n << endl;
}

其次,输出为7,6,我不明白它是如何获得7的?

来自语句 -

int test::n=0; 

'::'称为范围分辨率运算符。此操作员在这里用于初始化静态字段n,而不是类

静态数据成员在类中声明。它们是在班级外定义的。

因此,在类定义中

class test {
public:
static int n;
test () { n++; };
~test () { n--; };
};

记录

static int n;

仅声明n。您需要定义它是为其分配内存。这个

int test::n=0;

是其定义。test::n是变量的合格名称,表示N属于类测试。

根据类的定义,当构建类的对象时,此静态变量增加了

test () { n++; };

,当对象被破坏时,此静态变量降低

~test () { n--; };

实际上,此静态变量在计算类的活物体中起着作用。

因此,在主要您定义了类名称a

的对象
test a;

每次定义对象时,都会调用类的构造函数。因此,n增加了,等于1。定义5个对象的数组

test b[5];  

n等于6。

动态分配了一个对象

test * c = new test;

n等于7。

明确删除

delete c;

n再次等于6

相关内容

  • 没有找到相关文章

最新更新