构造函数

一、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函数来创建。

 

posted @ 2023-08-27 22:54  Niiiinomiya  阅读(70)  评论(0编辑  收藏  举报