看道法自然学到的点滴

 1。静态成员函数里的静态成员变量要先声明。

如:

class StaticTest

{

public :

static void SetSVar(int v){s_Var = v}

private:

static int s_Var;

};

int staticTest::s_Var;   //这里可以赋初值,但注意不要加static关键字

int main()

{

StaticTest t1;

t1.SetSVar(1);

}

必须先声明staticTest::s_Var,否则链接出错。这是因为c++中,因为类的所有实例共享一份静态数据成员拷贝,所以编译器不会在每一个实例中分配静态数据成员。也就是说这些静态数据成员根本不存在,除非我们按照定义全局变量的方式在类声明代码之外显示地定义它们。

2。在一个静态成员函数中不能引用非静态数据成员。否则编译都过不去。原因自己想,很容易。

3。atexit()函数,是程序结束时的响应函数。可以被用来new之后,来清理需要释放的资源。

你可能感兴趣的:(c,Class,编译器)