04.确定对象初始化

将对象初始化,C++反复无常,所以在使用前应该手动初始化

1.分清赋值与初始化

以下例子:

class test{

public:

int a;

test(){

a=0;//赋值而非初始化

}

};

class test2{

public:

int a;

test():a(0){//初始化

}

};

第二种比第一种高效,有时甚至高效很多,第一种会调用default构造函数,然后赋值,这样defalit的调用就完全浪费了,而第二种避免了对default的调用

注意,初始化列表中应该列出所有成员变量

初始化是以声明次序初始化的

2.关于非局部静态变量的初始化

非局部静态变量往往出现在多个实现文件中,而他们的初始化顺序无法确定(导致的问题:一个非局部静态变量的初始化用了另一个非局部静态变量,而被使用的非局部静态变量未被初始化),最好的办法是定义一个包含局部静态变量的函数,函数返回该变量的引用,以此来避免在对象使用前未被初始化

最新文章

  1. 下拉框-ComboBox
  2. tyvj1863 [Poetize I]黑魔法师之门
  3. SSIS学习笔记
  4. HDU 5044 Tree --树链剖分
  5. HDU5668 Circle 非互质中国剩余定理
  6. Kadj Squares - POJ 3347
  7. luogu3384 【模板】树链剖分
  8. Redis5.0+哨兵模式+Keepalived实现高可用
  9. Django web框架-----Django templates模板
  10. 微信公众号开发流程,jssdk的使用以及签名算法的实现
  11. 三、fgetc与fputc
  12. luogu P2480 [SDOI2010]古代猪文
  13. Linux基础命令---uniq
  14. centos install go
  15. volatile的陷阱
  16. _lottery
  17. 16:42 python历史
  18. Android的音频解码原来是直接调用的本地C方法直接通过硬件解码
  19. excel错误:外部表不是预期的格式 错误
  20. jdeveloper 恢复默认配置

热门文章

  1. 《HiWind企业快速开发框架实战》(3)使用HiWind创建和管理菜单
  2. 干货!表达式树解析"框架"(3)
  3. .NET 基础 一步步 一幕幕 [.NET 系列预热]
  4. session和cookie的区别
  5. Spring学习记录(九)---通过工厂方法配置bean
  6. 让IE系列支持HTML5的html5shiv.js和respond.min.js
  7. javascript运动系列第八篇——碰壁运动
  8. mac下安装tomcat
  9. SubSonic3.0.0.4.3源码包与调用Dll
  10. JavaScript sync and async(同步和异步)