构造函数
一、inline(内联)函数
什么情况下产生inline:函数在class的本体里面定义,就形成一种inline。在外头定义就不是inline。但是,是不是最后真的变成inline function由编译器决定。
inline有什么好处:快。有特点而没有缺点。尽量都写成inline那最好。
2-2不在本体内定义,可以在前面加上inline。
二、access level(访问级别)
数据部分为private;函数看情况,被外界调用用public。
三、constructor(ctor,构造函数)
初值列是C++特殊写法,是一种很好的写法。
默认值的意思是,如果在创建时没有指明,就用默认值。
构造函数一定要跟类的名称相同。没有返回值类型。
//这部分代码等价于
//可以这样写,但是效率差一些
complex (double r = 0, double i = 0) { re = r; im = i; }
三种创建对象的方式:
不带指针的class多半不用写析构函数。
四、ctor(构造函数)可以有很多个——overloading(重载)
例如,real()这个函数,同名但是参数不同,编译后给编译器看到的名称是不一样的,所以可以重载。
重载常常发生在构造函数上,但是由于目前拥有的这个构造函数已经有初始值了,但是还是可以重载写出其他的构造函数。
目前构造函数的1跟2两者是冲突的,因为第一个函数有默认参数,当创建c1的时候,没有参数,那么2(没有参数,符合c1要求)是候选人。complex类里有1,虽然有参数,但是有默认值,1也能被调用。编译器不知道该调用1还是2,不可以这样写。
五、ctors放在private区
经典写法:单例模式
该例子写了两个写法的构造函数。外界只能用一份,调用时要用getInstance函数来创建。