Boolan C++ 第一周课程--面向对象编程

一、导论

classes的两种经典分类是

  • class without pointer members (complex)

  • class with pointer members (string)

第一周是第一种,不带指针的类,以complex 的讲解为主。

二、头文件

在同文件中尽量采用防卫式声明


#ifndef __NAME__

#define __NAME__

.......


#endif

头文件的布局

Boolan C++ 第一周课程--面向对象编程_第1张图片

三、构造函数

class complex
{
 public:
  complex (double r = 0, double i = 0)
  : re (r), im (i) { }//初始化列表
 private:
  double re;
  double im;
};

在构造函数的初始化列表中,初始化顺序是以数据成员定义顺序为标准,在这个构造函数先初始化re,再初始化im,就算在初始化列表中改变他们的顺序也不会改变初始化的顺序,所以要按照数据成员顺序写入初始化列表,防止产生未定义行为。

  complex (double r = 0, double i = 0)
  : im (i),re (r) { }//依旧是先初始化re,再初始化im

四、函数签名

C++允许函数重载,函数重载必须保证函数签名不同,函数签名包括 函数名,参数列表,还有 const 关键字。

double real() {}
double real(double r)  {}//函数重载

五、小结

第一周的教程主要带我们进入面向对象设计的一些基础,比较容易理解,但是要做到像侯捷老师所说要写得大气。

侯捷老师反复强调的三个建议:

  1. 防卫式声明
  2. 不修改数据成员的成员函数要写上const
  3. 使用 pass by reference

你可能感兴趣的:(Boolan C++ 第一周课程--面向对象编程)