第01讲 类和对象(一)  

4.1 类及其实例化

4.1.1 类的定义

  第四章 类和对象 - 图1
  第四章 类和对象 - 图2
  第四章 类和对象 - 图3
  第四章 类和对象 - 图4
  第四章 类和对象 - 图5
  ::称为域限定符,表示函数是类的成员函数。此时函数若要定义为内联,则加inline关键字,类内定义的函数默认为内联函数。
  注意:类定义时,数据成员的赋值必须写在某个函数的内部。一般使用类似set的函数进行赋值。
  S1.set(1001,”张三”,22,99.5)
  类student的set函数应该怎么定义????
  第四章 类和对象 - 图6

4.1.2 使用类的对象

  类的对象的使用类似变量的使用。
  声明/定义对象,直接利用对象名使用
  通过对对象的引用使用对象
  通过指向对象的指针使用对象
  第四章 类和对象 - 图7
  在main函数中是否可按如下方式使用?
  第四章 类和对象 - 图8
  数据成员使用规律:
  1,类的成员函数可以直接使用类的数据成员
  2,类外的函数不能使用类的私有成员
  3,类外的函数可以访问类的公有成员函数
  4,对象间的区别在于其属性值不同

4.1.3 数据封装

  对象间利用公有成员函数进行通信。
  公用成员函数是对象的接口。

4.2 构造函数

4.2.1 默认构造函数

  若类的定义中未定义构造函数,则C++编译器会自动产生一个不带参数的默认构造函数,类似于:point(){},此时不对对象进行初始化。
  若类中定义了构造函数,则不再产生默认构造函数。
  4.2.2 定义构造函数
  构造函数无返回值,这样可以减少编译器的工作,提高效率。
  构造函数与类同名。
  构造函数可以重载。
  构造函数系统自动调用。
  第四章 类和对象 - 图9

4.2.3 构造函数和运算符new

  New和构造函数一同起作用,即new首先给对象分配内存,然后自动调用构造函数来初始化这块内存。
  第四章 类和对象 - 图10
  注意:new建立的动态对象只能用delete删除,一边释放空间。

4.2.4 构造函数的默认参数

  第四章 类和对象 - 图11
  第四章 类和对象 - 图12
  这是错误的,因为Point()比有默认参数的函数少。

4.2.5 复制构造函数

  <类名>::<复制初始化构造函数>(const<类名>&<引用名>);
  第四章 类和对象 - 图13
  Point(Point &p)比有默认参数的函数少,为什么它是对的。

4.3 析构函数

  析构函数的调用由编译器自动调用
  析构函数名在类名前加~
  析构函数无返回值
  析构函数无参数,可以显示说明为void
  析构函数不可以重载
  析构函数在对象生命期结束的时候由系统自动调用。

4.3.1 定义析构函数

  第四章 类和对象 - 图14
  类的对象数组的每个元素调用一次构造函数,调用一次析构函数。
  全局对象数组的析构函数在程序结束之前被调用。

4.3.2 析构函数和运算符delete

  delete后自动调用析构函数。与new相反。
  p81 [例4.8]

4.3.3 默认析构函数

  编译器为没有析构函数的类自动产生一个空体析构函数,与构造函数类似。
  总结:分配几次内存调用几次构造函数,反之调用析构函数

4.4调用复制构造函数的综合实例

  p82【例4.9】

第02讲 类和对象(二)  

4.5 成员函数重载及默认参数

  p85【例4.10】
  

4.6 this指针

  this指针是c++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起。
  this指针保证了每个对象可以拥有自己的数据成员。
  第四章 类和对象 - 图15

4.7 一个类的对象作为另一个类的成员

  p87【例4.11】

4.8 类和对象的性质

  4.8.1 对象的性质
  1.同一类的对象之间可以相互赋值;
  2.可以使用对象数组;
  3.可以使用指向对象的指针;
  4.对象可以用作函数参数;
  5.对象作为函数参数时,可以使用对象、对象引用和对象指针;
  6.一个对象可以用作另一个类的成员。
  4.8.2 类的性质
  1.使用类的权限
  2.不完全的类声明
  ■只用当使用类产生对象时,才进行内存分配;
  ■类没有完全定义之前就引用该类
  ■不完全声明仅用于类和结构
  3.空类
  4.类作用域
  ■类中默认控制权限时private

4.9 面向对象的标记图

  UML(Unified Modeling Language)是1992年面向对象管理组(OMG)制定的面向对象分析和设计的国际标准。
  UML是一种可视化建模语言,主要用于面向对象分析和建模。

4.9.1 类和对象的UML标记图(识记)

  第四章 类和对象 - 图16
  第四章 类和对象 - 图17

4.9.2 对象的结构与连接(识记)

4.10 面向对象编程的文件规范

4.10.1 编译指令 (识记)

4.10.2 在头文件中使用条件编译(领会)