由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这个c++ static var 很有意思
相关主题
再问C++初始化问题。一道 memset in C++的题
关于C/C++里的Static variable的memory allocation/initializashared_ptr处理stack上面的指针
C++弱问一个nested class的问题
what is the difference?c++ 不自动initialize变量么?
一个 default constructor 的问题diff between p = new myclass and p = new myclass() ?
thrust, about the initialization of POD抠字眼:assignment and initialize in C++
为啥 const Base cb 要求Base() {} 而 const vBase vb 不呢?码工试题 (转载)
static initialization dependency c++C++里面如何最方便的表示这个数组的数组?
相关话题的讨论汇总
话题: static话题: var话题: myblah话题: fun话题: c++
进入Programming版参与讨论
1 (共1页)
c******n
发帖数: 4965
1
class blah{
}
void fun() {
static blah myblah;
}
int main(int argc,char** argv) {
fun();
fun();
return 0;
}
你可以用g++ -S -o out.S mycode.cc
看看输出的assembly, compiler 自己生成了一个var 记录static var myblah 有否被
initialized 过
X****r
发帖数: 3557
2
因为C++规定局部静态非POD变量必须在控制第一次进入这个函数初始化。

【在 c******n 的大作中提到】
: class blah{
: }
: void fun() {
: static blah myblah;
: }
: int main(int argc,char** argv) {
: fun();
: fun();
: return 0;
: }

z****e
发帖数: 2024
3
红猪侠的semantics是越来越高级了。
我理解,这个编译器自动生成的记录,也是以后“条件析构”conditional
destruction 的依据。
很久以前不是所有全局静态都要在startup时候初始化么?但是C++有了lazy
evaluation 机制,就能initialize on invocation.这条记录,就是析构的时候看用不
用析构。

【在 X****r 的大作中提到】
: 因为C++规定局部静态非POD变量必须在控制第一次进入这个函数初始化。
1 (共1页)
进入Programming版参与讨论
相关主题
C++里面如何最方便的表示这个数组的数组?一个 default constructor 的问题
static vector 怎么 initialize ?thrust, about the initialization of POD
c++ initialize struct为啥 const Base cb 要求Base() {} 而 const vBase vb 不呢?
Learn C++ 11 in 20 Minutes (视频)static initialization dependency c++
再问C++初始化问题。一道 memset in C++的题
关于C/C++里的Static variable的memory allocation/initializashared_ptr处理stack上面的指针
C++弱问一个nested class的问题
what is the difference?c++ 不自动initialize变量么?
相关话题的讨论汇总
话题: static话题: var话题: myblah话题: fun话题: c++