您的位置:首页 > 编程语言 > C语言/C++

c++静态变量与菲静态变量

2013-11-10 23:06 155 查看
刚开始用C++写程序,遇到了一个很奇怪的问题,就是在类定义的面定义了一个静态成员变量,但在使用时编译器报错称变量不是类的成员。

文件a.h内容:

/**********************A.h****************************/

#define A_H

class A

{

static int num1;

int num2;

A();

}

#endif

文件a.c内容:

/**************************a.c**************/

#include "a.h"

void A::A()

{

num2=1;//正确

num1=2;//报错

}

编译 错误:undefined reference to `A::num2'。

问题分析,对于a.h中的内容是不分配存储空间的,只是向编译器作出声明。对于num2,他是在实例化时分配内存的,而num1是一个静态成员,他在是在定义时就分配空间。

num1=2;之所以会报错就是我们还没有定义,没有为他分配空间。

/**********************A.h****************************/

#define A_H

class A

{

static int num1;//这里只是声明,并没有定义

int num2;//声明,在实例化时分配内存

A();

}

#endif

/**************************a.c**************/

#include "a.h"

int A::mun1;//定义,分配内存,以后A每一个对象(实例)的创建都不再分配内存

void A::A()

{

num2=1;

num1=2; //不报错了

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: