关于“只有静态常量整型数据成员才可以在类中初始化”

关于类中的静态成员变量,

在类中只能声明,不能定义
注意在类的内部只是声明,不是定义

类中的静态变量是属于类的,不属于某个对象!不能在定义对象时对变量初始化!就时不能用构造函数来初始化!而且使用时应加上类名,而不是对象。例如:
class A{
static int x;
static int y;
}
int A::x=1;
int A::y=2;//这样初始化!
int main(){
cout<<A::x<<endl;
cout<<A::y<<endl;//同样只能这样使用!
}  

下面是对static的一点讲解
===============================================
  静态数据成员的使用方法和注意事项如下:

  1、静态数据成员在定义或说明时前面加关键字static。

  2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:

    <数据类型><类名>::<静态数据成员名>=<值>

  这表明:

  (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。

  (2) 初始化时不加该成员的访问权限控制符private,public等。

  (3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

  3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。

  4、引用静态数据成员时,采用如下格式:

   <类名>::<静态成员名>

  如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员。  

还有,只有静态常量整型数据成员才可以在类中初始化

类中的静态成员变量使用时,需要在类外声明;
但是不能在*.h文件中,而只能在*.cpp文件中声明;

然后在其它函数中可以直接使用。

比如:*.cpp文件中:

========================a.h====================================================
class CMyLibpurple
{
public:
CMyLibpurple(void);
public:
~CMyLibpurple(void);
public:
static PurpleConversation *LocalConv;
}
========================a.h====================================================

========================a.cpp====================================================
PurpleConversation *CMyLibpurple::LocalConv = NULL;
CMyLibpurple::CMyLibpurple(void)
{
//LocalConv =NULL; 不能在构造函数中初始化,因为静态变量不属于哪个对象,而是属于类。
}

static void
null_write_conv(PurpleConversation *conv, const char *who, const char *alias,
     const char *message, PurpleMessageFlags flags, time_t mtime)
{
CMyLibpurple::LocalConv = conv;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值