游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2971|回复: 8

C++基础的问题哦.帮帮忙啊

[复制链接]

5

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2007-8-8 01:40:00 | 显示全部楼层 |阅读模式
C++中有哪几种数据存储类型,有四种,除了static    extren 还有两个,大家知道是什么吗??
它们的用法是什么,有人知道的话请教下,希望能给我非常详细的解答...................把它们的全部用发说来听听啊,很急的哦
各位大虾谢谢 拉 [em1] [em1] [em1]

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2007-8-8 08:29:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

auto 普通变量的类型,不用写出来
volatile 声明该变量可能被其它线程或进程修改,不可以对它进行优化
不知道你指的是不是这些东西

76

主题

1100

帖子

1107

积分

金牌会员

Rank: 6Rank: 6

积分
1107
发表于 2007-8-8 14:47:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

auto ,extern static register

auto是默认的
普遍用比较多是static

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2007-8-8 17:17:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

噢,是这4个啊。auto不用写,register只是建议,一般编译器也不照办,只有extern和static用得多

5

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2007-8-9 03:00:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

谢谢,我知道了,但能不能仔细说说static的用法呢

3

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2007-8-9 11:21:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

static是静态的,一般说来是全局区的,因此不管你写在哪,它都应该在编译之前就为它分配内存,
如果你写在类内的格式如下:
CLASS A
{
static 类型 S;
};
类型staic A::S=初始化;

注意是在类的外部初始化
注:初始化是指第一次赋值的行为

for(int i=0;i<1000;i++)
{
int a=0;
a++;
static int b=0;
b++;
}
a与b不同
a=1;
b=1000;
原因:a每次都是声明,而B是静态的在编译之前就存在,因为编译器再编译之前,是要连接所有库,连接外部变量,检查语法等等。包括为静态区分配内存
c++对static的注意细节还有很多,建议斑竹看看C++的基础教材的static部分,这些细节的原因在于它的特殊性(上面说的)

5

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2007-8-10 00:15:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

谢谢,我今天看了一些tatic的用法,分三类,
a.  tatic局部变量
b.  tatic外部变量和函数
c.  tatic成员变量和函数

不知道tatic还有没有别的使用方法吗?  都要注意什么.....

3

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2007-8-13 11:09:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

呵呵,好久没用C++了,最近在弄C#,以前我也很少用static,一般在以下情况下用的多,
1当作类的引用计数器用,比如我可以知道程序中该类引用了多少事例
比如
CLASS A
{
  static int num;
  static bool can;
  A()//构造
  {
    num++;
  }
  ~A()//析构
  {
   num--;
  }
};

int staic A::num=0;
bool staic A::can=true;

A a;
A b;
A c;

A::num=3;
这在COM中用的多当引用为0时释放该对象

2比如有一个类的两个以上的对象都想对一个资源改写
但该资源只能同时被一个对象改写,于是在这个类中需要有公共的开关的东西,就可以用bool 的static,当a在用时A::can=false; 当b再用时先要判断A::can
当然任何对象用完后都要A::can=true;

76

主题

1100

帖子

1107

积分

金牌会员

Rank: 6Rank: 6

积分
1107
发表于 2007-8-28 00:30:00 | 显示全部楼层

Re:C++基础的问题哦.帮帮忙啊

Static 是局部里的全局,这样去理解就清晰了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 03:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表