场景是这样的: 我需要一个长度,通过某个函数计算返回,为了链式运算,采用返回值方式,
因此会有个相关的局部变量,很明显不可以,于是我自作聪明的定义了一个
static局部变量,并初始化为0,结果出错了,调试了一下,发现长度阶段性的
递增,导致后面紧接的转换函数因得不到正确的长度而失败。
分析:
static是静态,全局状态下只维护一个实例,虽然初始化为0,但注意,这是
初始化只在第一次建立对象的时候初始化,这就导致后续操作的初始值
不是0,错误产生。
无奈之下只能用临时变量返回或者初始化和赋值分开了。
总结:
大意,想当然了。
不过也加深了对c++下static的认识。
static局部变量生存周期虽是全局,但其名字的作用域有限,依然为局部对象。
只初始化一次。
阅读(1942) | 评论(0) | 转发(0) |