类中静态变量如何初始化如何使用

Concise3 2002-11-19 10:25:59
类中静态变量如何初始化如何使用
...全文
35590 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigLeo 2002-11-19
  • 打赏
  • 举报
回复
下面是对static的一点讲解
===============================================
  静态数据成员的使用方法和注意事项如下:

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

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

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

  这表明:

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

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

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

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

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

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

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


ashchan 2002-11-19
  • 打赏
  • 举报
回复
类定义:
class Test {
// sth...
static int i;
};

在程序中,一般为 main() 之前,用如下方式进行初使化:

int Test::i = 100;

作用时,可能用一个 Test 的实际对象,也可以直接用类 Test 来取得 i(因为 static 成员属于类而不属于对象):
Test obj;
int usei1 = obj.i;
int usei2 = Test::i;

PS, lmfree(mike) 的实例化有问题,在初使化时仍带有 static 关键字会引起重复声明。
dhy311 2002-11-19
  • 打赏
  • 举报
回复
up
yahaha 2002-11-19
  • 打赏
  • 举报
回复
类中的静态变量是属于类的,不属于某个对象!不能在定义对象时对变量初始化!就时不能用构造函数来初始化!而且使用时应加上类名,而不是对象。例如:
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;//同样只能这样使用!
}
lmfree 2002-11-19
  • 打赏
  • 举报
回复
exp:
class aclass{
public:
static int a;
};
static int aclass::a=0; //初始化

void main(void)
{
int amain=0;
amain=aclass::a;//使用,无需定义相关类的变量而直接使用之。
}

windcsn 2002-11-19
  • 打赏
  • 举报
回复
静态变量或成员只有一个副本!
zhengguoshan 2002-11-19
  • 打赏
  • 举报
回复
class aclass{
public:
static int a;
};
static int aclass::a=0; //初始化
jian 2002-11-19
  • 打赏
  • 举报
回复
注意在类的内部只是声明,不是定义
~~~ ~~~
静态变量在类的外部才定义的。

69,559

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧