注册 登录
编程论坛 C++教室

[求助]什么是静态数据成员啊

cpluslover 发布于 2006-12-14 00:03, 3051 次点击

请看题目,呵呵

谢谢啦

21 回复
#2
noviceby2006-12-14 00:45

建议:看书!!

#3
一二三四五2006-12-14 09:09
静态就是属于类的
#4
song42006-12-14 09:14

如果一个类里有静态成员
它不属于类

#5
一二三四五2006-12-14 09:25
#6
song42006-12-14 12:00
现在回来了
说一下那个静态成员
因为如果他想保持静态
需要放入静态数据区,而每个类都有所谓的自己的类域
这个静态成员没有在那类域里面
因为这个静态成员独立,所以他不会跟类对象的生存周期一样
而且,这个成员一个类只有一个,并且这个静态成员为所有该类对象所共有
大家都可以访问这个静态成员地址,相当于一个friend成员
#7
pusawl2006-12-14 19:12
应该说静态数据成员属于类,而不属于对象。静态数据成员被这个类的所有对象所共享。
6楼,不知道我说的对不?反正书上是这么说的。
#8
song42006-12-14 19:17

确实 ,书上是这么说
但这只是为了理解,是表面上属于类
其实静态成员的地址不属于类域

#9
pusawl2006-12-14 19:38
如果不属于类,请问系统如何将这个静态数据成员和这个类联系在一起?
因为我们在程序中使用这个静态变量的方法是:
类名::静态变量

望楼上解释一下,我们这些初学者也好加深印象。
不胜感谢
#10
song42006-12-14 22:15

可以保存指向该数据的指针
类名::静态变量
这只是用于区别这个静态变量是属于谁的
但这并不是地址属于该类

#11
pusawl2006-12-15 12:44

什么指针可以指向这个静态数据成员?要知道
类名::静态变量
是没有this指针的。

#12
tancui2006-12-15 13:00
就是程序执行中不删除的数据
#13
wfpb2006-12-15 13:16
class A
{
int a;
static int sa;
};
cout<<sizeof(A)<<endl;
//输出4
#14
song42006-12-15 16:10
以下是引用pusawl在2006-12-15 12:44:49的发言:

什么指针可以指向这个静态数据成员?要知道
类名::静态变量
是没有this指针的。

呵呵,指数据不一定是this啊
因为他们不是存储在一起
所以你className::p
就是这个指针的名字
也可以说是这个静态成员的名字
而他不在类域里

#15
yuyunliuhen2006-12-15 17:43
又学到不少东西~
#16
pusawl2006-12-15 18:54

从道理上来说,“类名::静态数据”是定位到了那个数据,是否可以说“类名::静态数据”就是那个静态数据在内存单元的名称?就象“int a=10;”,a是内存中存放了这个10的那个存储单元的名称一样?
换句话说,“类名::静态数据”和a在逻辑上是等价的?或者说编译器将“类名::静态数据”和a映射到内存单元的方式是完全一样的?再换句话说,是否可以理解成那个静态数据成员和这个类完全没有联系,我们采用“类名::静态数据”的方法标记这个静态数据成员只不过是为了理解上的方便?

我的问题是不是太多了?哈哈

[此贴子已经被作者于2006-12-15 18:59:16编辑过]

#17
pusawl2006-12-15 21:30

初步判断:
类名::静态数据 和 int a 中的a逻辑上是不一样的

#18
song42006-12-15 21:35
我晕了
我就说一点吧
这就象函数的前缀
用来互相区分
#19
pusawl2006-12-15 23:59

呵呵,斑竹都能晕?
好吧,静态数据成员不论从逻辑角度或内存角度来说和对象没有关系这是肯定的;
从逻辑上讲静态数据成员和类是有关系的,是属于类的。
这么说不知道对否?
斑竹不要不耐烦啊

#20
wujunhua2006-12-16 16:39

刚开始学,帮不上忙
倒是学习了

#21
song42006-12-16 19:27
以下是引用pusawl在2006-12-15 23:59:15的发言:

呵呵,斑竹都能晕?
好吧,静态数据成员不论从逻辑角度或内存角度来说和对象没有关系这是肯定的;
从逻辑上讲静态数据成员和类是有关系的,是属于类的。
这么说不知道对否?
斑竹不要不耐烦啊

这是对的

#22
pusawl2006-12-17 00:11
谢谢斑竹不厌其烦的帮我们这些菜鸟解答!
1