关于C++全局变量和静态变量初始化的一些总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于C++全局变量和静态变量初始化的一些总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含816字,纯文字阅读大概需要2分钟。
内容图文
1.全局变量
全局变量无疑要在main函数开始前执行完成,但可细分为在编译时和在运行时初始化,即static initialization和dynamic initialization。
- static initialization
静态初始化按照我的理解,是针对那些较为简单的,c++内部定义的数据结构,如int,double,bool及其数组结构的初始化。又可分为zero和const两种方式。
对于zero初始化,编译时编译器将其分配在.bss段,不占用rom空间;而const初始化,也就是我们指定了全局变量的初始值,编译器会将其分配在.data段,占用romon空间。
- dynamic initialization
这种初始化针对的是需要调用构造函数才能完成的初始化。这种初始化会在main函数执行前由运行时库调用对应的代码进行初始化。
静态初始化先于动态初始化,这一点很好理解。静态初始化在编译时初始化,直接写进.bss和.data段,程序执行时直接加载,而动态初始化只能在运行时由运行时库调用相应构造函数
进行初始化。
2.类的静态成员
C++规定,const的静态成员可以直接在类内初始化,而非const的静态成员需要在类外声明以初始化。对于后一种情况,我们一般选择在类的实现文件中初始化。
至此,具体的初始化方式和上面所说的又是一致的,可在编译期间初始化,也可以在运行时初始化。
3.关于静态成员函数和静态成员变量的使用
两者都可以通过类名+"::"的方式进行使用,此外,对于类的对象,指针或引用,也可以直接调用。但类的静态成员函数由于不含有this指针,只能引用其类的静态成员变量。
不过有一种技巧,可以给类的静态成员函数传递该类的指针、引用等作为形参,强行使用该类的对象。
原文:http://www.cnblogs.com/fushi/p/7631359.html
内容总结
以上是互联网集市为您收集整理的关于C++全局变量和静态变量初始化的一些总结全部内容,希望文章能够帮你解决关于C++全局变量和静态变量初始化的一些总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。