|
|
发表于 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++的一些零碎代码编译到大段代码一样有效率,可是现在还是有一点速度区别的.
|
|