摘要:
1、定义变量的时候,如果没有初始化,它的值是什么呢? 它的值取决于变量的类型和变量定义的位置。2、考虑基本类型的变量,定义时没有初始化。如果定义在方法外部,初始化为0,如果定义在方法内部,不被初始化。使用未初始化的变量,导致未定义行为。未初始化的变量事实上,也有一个值,这个值是随机的。因此强烈建议,基本类型的变量都要初始化,也就是方法内部的变量。3、考虑类类型的变量,定义时没有初始化。不管定义在哪里,都会调用默认构造方法,这种情况下,必须提供默认构造方法,如果没有,编译出错。也就是说,对于类类型的变量,不存在没有初始化的情况,因为没有显式初始化,会调用默认构造方法进行隐式初始化。 阅读全文
posted @ 2014-01-07 20:32
Andy Niu
阅读(1055)
评论(0)
推荐(0)
摘要:
1、继承关系可认为,子类在父类的基础上进行。从这个角度讲,可把它认为穿衣脱衣的过程。穿衣是:先穿内衣,再穿外套。脱衣是:先脱外套,在脱内衣。构造是:先调用父类构造方法,再调用子类构造方法。析构是:先调用子类析构方法,再调用父类析构方法。2、构造可分为两个步骤:初始化列表和方法内赋值。前者的使用场景是:初始化,即copy构造。后者的使用场景是:赋值,即copy赋值。 a、对于类类型,如果没有在初始化列表中显式初始化,会进行隐式初始化,调用默认构造方法。因此,没有默认构造方法的类成员,必须显式初始化。 b、对于基本类型,如果没有在初始化列表中显式初始化,不会进行隐式初始化。初始值依赖于对象的作.. 阅读全文
posted @ 2014-01-07 19:49
Andy Niu
阅读(446)
评论(0)
推荐(0)
摘要:
1、首先理解需求,被调用方法修改了形参,如果期望在主调方法中的实参也发生变化,必须使用pass-by-reference。因为C++缺省情况下(继承C方式),以by-value传递对象,在被调方法中修改的是实参的副本。2、在被调方法中,必须修改形参,但是期望主调方法中的实参不发生变化,这种情况下,必须使用pass-by-value。3、在被调方法中,不修改形参。应该使用pass-by-reference-to-const替换pass-by-value(有例外情况)。为什么? a、因为pass-by-value的成本大。要创建新对象,调用构造方法和析构方法。主要有:父类构造方法-->父类字 阅读全文
posted @ 2014-01-07 18:57
Andy Niu
阅读(308)
评论(0)
推荐(0)
浙公网安备 33010602011771号