3. 构造函数

1. inline(内联)函数

inline函数很好,其优点是:传的速度快。那所有函数都做成inline()函数岂不是很好,有的函数即便放在class body内完成定义,编译器也没办法变成inline()函数。简单的函数可以,复杂的不可以。如下面的两个函数,都是只是返回一个数据,如此简单的函数想必编译器可以把它做成inline()函数。

如果函数没在class body内定义,而是在class body内声明,class body外定义,此时还是想把它写成inline()函数,那么只需要在函数的开头加上“inline” 关键字即可。

 2. 访问级别

访问级别是指public:和private:所形成的区域。前者形成的区域是可以被外界访问的区域,后者形成的区域是不可以被外界访问的区域。private:区域永远可以被它的兄弟public:区域访问。

没有特殊情况的话:

  • 数据一般放在private区域。
  • 函数一般放在public区域。

 3. 构造函数(大主题)

C++说,在利用类名创建一个对象的对象的时候,有一个函数会被自动调用,这个函数就是构造函数。

构造函数的特点:

  • 没有返回值类型,也不需要有,不必有;
  • 用创建实例的时候传递进来的参数值去初始化私有变量;

  • 可以在函数(大括号)内部去初始化私有变量,但是函数名后面冒号后初始化更好。大括号内部初始化未尝不可,但是动作稍微晚了一点,效率变低了一点(侯捷老师的话是:效率上差了一点)。

 

 4. 析构函数

不带指针的class多半不用写析构函数,像上面这个例子就不用写析构函数。

 5. 构造函数可以由很多个,这就是overloading(构造函数的重载),在使用类创建对象的时候,有多少个想法就可以创建多少个形状不同的构造函数,形状不同指的是函数参数个数不同

下面这个构造函数的重载形式不可以,因为当创建下列两个对象时,编译器会犯傻,不知道该调用哪个构造函数。

{
    complex c1();
    complex c2;
}

因为这创建这两个对象的时候,都没有提供参数值,所有似乎调用哪个都可以(只要提供默认值的都可以),此时构造函数会起冲突。重载可以,带歧义的重载不可以。

6. 非构造函数的重载

重名函数,人看相同,编译器会把它们编译成名字不同的函数,编译后的名字人看不懂。

原文地址:https://www.cnblogs.com/yibeimingyue/p/12289898.html