8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

什么使得静态变量仅初始化一次?

dita 1月前

69 0

我注意到,如果在代码中初始化 C++ 中的静态变量,则初始化仅在第一次运行该函数时运行。这很酷,但它是如何实现的?它会翻译吗?

我注意到,如果在代码中初始化 C++ 中的静态变量,则初始化仅在第一次运行该函数时运行。

这很酷,但是它是如何实现的呢?它是否转化为某种扭曲的 if 语句?(如果给定一个值,则...)

void go( int x )
{
    static int j = x ;
    cout << ++j << endl ; // see 6, 7, 8
} 

int main()
{
    go( 5 ) ;
    go( 5 ) ;
    go( 5 ) ; 
}
帖子版权声明 1、本帖标题:什么使得静态变量仅初始化一次?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由dita在本站《function》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 是的,编译器通常会生成一个隐藏的布尔值“这是否已初始化?”标志和一个 if 在每次执行该函数时运行的标志。

    这里有更多阅读材料: 编译器如何实现静态变量初始化?

返回
作者最近主题: