游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: william9527

C++中Static的局部变量是编译时属性还是运行时属性

[复制链接]

30

主题

276

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2004-11-12 04:26:00 | 显示全部楼层

Re: Re:C++中Static的局部变量是编译时属性还是运行时属性

william9527: Re:C++中Static的局部变量是编译时属性还是运行时属性

1、我的理解是不管是怎么样的static变量,编译器都会对其作些手脚,如果是个类或者结构,就在程序初始化的代...

--编译器都会对其作些手脚--编译器做手脚是c++相对于c而言的.所以.
...看你怎么判定,如果按照 内存分配 来看,你可以把他叫做编译时?
如果按照 初始化值 来看 无构造函数的static为编译时(或者有构造,但编译器可以推敲出常量进行构造的),构造函数接受了可变量输入的static为运行时?
关键要看 你同学问的 运行时属性 是运行时的什么属性?

有构造函数的static 比全局慢 是因为 static 要 生成一部分汇编用于判定是否调用构造函数 ...
所以这里也是一个C会比C++快的地方.
C风格的话 大多会在使用之前统一找个函数init...
c++则是把一个大部分拆成了许多小部分再放到小部分里使用,虽然按照许诺,有一天编译器会把c++的一些零碎代码编译到大段代码一样有效率,可是现在还是有一点速度区别的.



13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2004-11-12 16:03:00 | 显示全部楼层

Re:C++中Static的局部变量是编译时属性还是运行时属性

争论这个是没有意义的……因为这种用法实际会被namespace用法代替……见《c++ primer》8。6节……弄明白namespace就弄明白static了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 05:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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