游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5456|回复: 17

static 称为 “通用” 更合适

[复制链接]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-5-27 21:45:00 | 显示全部楼层 |阅读模式
[em5]

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2007-5-27 22:46:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

-___-|||

静态就是静态,不是想当然的。之所以叫静态,你去研究一下汇编以及内存布局,就知道了。

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-5-27 22:56:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

heap 这个我是了解一些的 ^_^ ,只是这样不太对应人类的常规思维

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-5-29 13:39:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

怎么联想也联想不到"通用"这个词.
static 我觉得应该用private代替
然后在函数里面的应该取缔,不要了.
在类里面的保留方可.

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2007-5-29 15:30:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

吐血,到底有没有理解 static 的含义啊。。。。

静态最大的一个特点,就是它不依赖于对象this,是某个类的所有对象公共的数据/代码。
静态变量,在内存布局上,一般会被直接放在数据段,而不是在堆栈中。
静态函数,只能操作静态变量,不能操作成员变量,从某种意义上说,有宏定义的味道(实际不是),也不依赖於this
静态对象,会在第一次被使用时自动构造,在程序退出时自动释放。

所以,例如单件模式,就靠static的特点来实现;;一些地方也推荐用 const static 来替换 define

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-5-30 00:04:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

static 是类对象中的通用部分,是您自己说的俄, “某个类的所有对象公共的数据/代码”,公共地不就素通用了。恩,static函数只能访问static数据,这看到了

另外,貌似看到一个说法,const 是C++代替 define 用的,const可以跟在一个类里一起存亡,不知理解是否正确

另外," " 里面的对象是不是就是 const 的呢?但我可以通过 string类型的变量的函数来改变这个啊,比如 .resize() ,刚开始学,有时候清楚,有时候糊涂

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-5-30 00:08:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

还有, string 对象的长度是size() ,我把它 resize( size() - 1 ),会不会有错误产生? 作用是去除最后一个字符,比如标点符号。

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2007-5-30 09:54:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

static是因为其静态不依赖this的属性,才有了对象共用的外表,不要本末倒置。

const只是不可变常量,任何一个对象都可以有自己的const变量,独立拥有的。const static才是define,不可变,且共用一份。

string会把字符串拷贝到自己的数据区,你变化的都是它的数据区,对源串无任何影响,同理,resize也只是改变其数据区内容。

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
 楼主| 发表于 2007-5-30 14:26:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

感谢 6spring 悉心教导

resize( size() - 1 ) 之后,那部分内存怎么了? 是不是resiz()的过程是 string自己重新又生成了一个数据,把原来那个数据删除了?

我想改变或者删除const变量。。。这个怎么做呢,重新生成一个,删了原来那个,再把指针指向新的那个?

const 是不是 不是放在堆里面的,那如果有大量的const 会不会溢出呢。。。比较蠢的问题,别笑话我

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2007-5-31 22:12:00 | 显示全部楼层

Re:static 称为 “通用” 更合适

原来是这样来的"通用"

static 可以称类成员
非static 成为对象成员

建议shengkz想系统点学习,而不是靠奇思妙想, 可以看看c++ primer.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 08:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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