码迷,mamicode.com
首页 > 编程语言 > 详细

effective c++学习笔记条款4-7

时间:2016-07-30 12:00:56      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

条款4:确定对象被使用前已经初始化

 

一、

变量在不同情况下可能会初始化,也可能不会初始化。

注意初始化和赋值的区别。

1、在类中内置类型不会发生隐式初始化,自定义有默认构造函数的能被默认初始化

  所以在构造类时务必初始化内置类型,最好给自定义的对象显示初始化避免在函数体中赋值浪费资源。

2、内置类型在函数体内不会初始化,在函数体外自动初始化为0。

二、

1、const和引用类型必须初始化,不可能赋值

 

1、当类实在是有较多构造函数,并且总是要对一些成员数据重复初始化,可以考虑将那些“赋值和初始化一样好的”数据的赋值放入一个往往是私有的工具函数中。

四、

1、c++有着严格的初始化顺序,将成员初始化顺序和类中声明的顺序一致是个好习惯,否则可能会出现晦涩错误

五、

c++保证函数内的static对象会在首次被调用时初始化,用这个代替一个在其他文件的no_local-static对象就保证了初始化的顺序.

1、多编译文件中,一个文件中的A类对象的初始化依赖于另一个文件中一个B类的对象的数据的话,初始化顺序就是一个问题,因为编译器无法确定哪个文件中的类的对象能先被初始化,可是一个A类对象的初始化却依赖于另外一个B类对象的痴树花。

解决方案:

  将A类中为B类定义准备的一个实例化对象extern A x 变化成一个内嵌有定义一个static A x的返回&函数,通过这个函数来初始化B类,这样保证了类间对象初始化的顺序。

 

effective c++学习笔记条款4-7

标签:

原文地址:http://www.cnblogs.com/7-29/p/5720597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!