3构造函数

  • 内联函数

    函数在class内部定义就成为内联函数;或者在外部用inline关键字

    内联函数会很快,很好,尽量使用

    但最终是否内联,还是要看编译器,过于复杂的函数即使声明内联了,也不一定变成内联

  • 访问级别

    • public:一般放函数
    • private:一般放数据
  • 构造函数

    函数名称和类名称相同

    1
    2
    complex()
    : re(r)

    构造函数独特的初始方法,非常推荐使用

    带指针的需要写析构函数

    构造函数经常重载,函数可以同名,但不能让编译器混淆不知道用哪个

4参数传递与返回

  • 构造函数放在private,就不能创建对象。
    但可以用Singleton这个方法

  • 不改变数据内容的函数要加const,
    否则编译器可能报错

  • 参数传递

    尽量不要pass by value,
    用pass by reference,相当于只传指针4个字节

  • 返回值传递

    尽量也用by reference

    conmplex& operator += (const complex&);

  • 友元函数

    朋友可以来使用private中的数据

    相同class的objects(对象)互为友元

  • 什么情况不可以by reference

    一个新的输出,需要占据新的内存空间

5操作符重载

  • 成员函数

    成员函数中的一个参数:this被隐藏。this实际上是一个指向调用者的指针,不能写出来,否则会报错

引用:传递者不用管接受者是不是by reference

换句话说,传递者用value,接收者(函数)用reference

  • 非成员函数

    没有this

+不能by reference,+=可以

临时对象,typename(),类似int()

特殊符号<<只能用非成员函数

函数返回类型+是否传引用
函数名称
(参数传递)
const
{函数内容}

6复习复数complex类的实现

  • 防卫式常数定义
  • Head和Body
  • private:数据类型
  • public:函数
  • 构造函数
    • 构造函数初值列
    • 构造函数内容
  • Body内部设计你想要的函数,操作符重载等
    • 成员函数/非成员函数
    • 函数类型
    • 返回值能不能引用
    • 要不要加const
    • 参数能不能引用
    • 要不要加const
  • 友元函数
  • Body本体之外的函数