当前位置:众信范文网 >专题范文 > 公文范文 > 第五章总结

第五章总结

时间:2022-08-18 12:55:05 来源:网友投稿

下面是小编为大家整理的第五章总结,供大家参考。

第五章总结

 

 第五章特殊函数和成员 1, 成员初始化 当类中定义了 const 成员, 引用成员时, 构造函数中要为这些成员初始化, 使用初始化列表形式。

 如:

 下面 test 类中构造函数定义形式。

 PI 和 r 是 const 成员和引用成员必须使用初始化列表形式, x,y 是普通成员, 可在函数体内为 x, y 赋值。

 注意下面程序中 PI 和 r 的初始化形式。

 2, 静态成员 用 static 声明的成员为静态成员,

 静态成员必须在类外初始化,

 静态成员不依赖于对象而存在, 对象未产生之前, 静态成员已存在 静态成员函数没有 this 指针 可通过类名限定来使用静态成员。

 若在类体内用 static 声明了静态成员函数, 在类体外定义静态函数时不需要加 static 关键字。

 静态成员函数不能说明为虚函数 静态成员是类的成员不是对象的成员

 使用时注意:

 类的对象可调用静态成员(数据成员和成员函数)

 静态成员函数不能访问非静态成员 静态成员函数可访问静态成员 注意:

 静态对象何时构造何时析构

 3, 阅读如下程序, 写出运行结果。

 注意静态对象 ty 的生存周期:

 何时构造何时析构。

  4, 友元:

 普通函数作友元, 类的成员函数作类的友元, 一个类作另一个类的友元。

 用 friend 声明, 友元必须通过类的对象或引用来访问类中的成员。

  注意:

 在友元函数内如(dist 函数)

 必须通过引用来访问对象的成员。

 此为类做友元

 友元可以访问类的私有成员, 公有成员和保护成员。

 友元可以是一个类或函数也可是一个类的成员函数。

 友元需通过对象或引用来使用类的成员。

 友元关系是单向的, A 是 B 的友元, B 不一定是 A 的友元。

 友元关系是不传递的, A 是 B 的友元, B 是 C 的友元, A 不一定是 C 的友元。

  5, const 对象, const 数据成员, cosnt 限定的函数参数, const 函数

 1)

 const 限定的数据成员初始化时必须使用初始化列表形式。

 注意:

 类的数据成员在不可在定义时为 数据成员初始化。

  2)

 const 变量定义时必须初始化。

 注意 const 变量和 cosnt 数据成员的区别。

  3)

 const 限定的形式参数在函数体内不可出现改变参数的语句。

  4)

 const 函数定义形式:

 类型

 函数名(参数)

 const

 {

 //函数体

 }

  注意:

 const 函数体内不能出现任何试图改变变量值的语句。

  5)

 const 对象:

 cosnt

 A

 a(参数);

 定义类 A 的对象 a 时加 cosnt 限定, 则 a 为 const 对象即常对象。

 const 对象定义后对象不可改变。

 注意:

 cosnt 对象只能调用 const 成员函数, const 对象不能调用非 const 成员函数。

 const 成员函数只能调用 const 成员函数, const 成员函数不能调用非 const 成员函数。

 非 const 对象可调用 const 成员函数。

 Const 函数和普通函数可进行重载, 即可定义一个 f函数, 再定义一个 const 限定的 f函数 析构函数和构造函数不可定义为 const 函数,

 静态函数可定义为 const 函数(此种定义无使用价值)。

  6, 类的对象数组:

 对象数组中的每个元素都是一 个对象。

 对象数组元素的使用同普通对象使用相同。

 对象的指针可指向对象, 对象的指针可指向对象数组中的元素。

  可定义对象的指针数组, 该数组中的每个元素都是指针。

 定义对象数组时要调用多次构造函数。

  7, 指向函数的指针和 指向成员函数的指针

  1)

 定义形式:

 类型 (* 指针名)(参数类型, 参数类型);

 例如:

 int (*pf)(int, int, int); 表示 pf能指向返回值为 int, 并且有三个 int 型参数的函数。

 若有函数 int f(int a, int b, int c)

 { //函数体

 }

 则可使用 pf=f; 使得 pf指向 f函数。

 通过*pf(1, 2, 3); 形式来调用函数 f。

  2)

 定义形式:

 类型 (类名:

 :

 * 指针名)(参数类型, 参数类型);

 例如:

 int (A:

 :

 *pf)(int, int, int);

 表示 pf能指向 A 类中返回值为 int, 并且有三个 int 型参数的成员函数。

 不可指向其他类中的成员函数。

 若有 A 类的成员函数 int A:

 :

 f(int a, int b, int c)

 { //函数体

 }

  则可使用 pf=A:

 :

 f; 使得 pf指向 A 类的成员函数 f。

 通过 (对象名.*pf)(1, 2, 3); 形式来调用成员函数 f。

 8, 阅读程序, 说明程序运行结果, 理解函数指针 int max(int a,int b) {return a>b?a:b;} void main(){

 int (*p)(int ,int );

 p=max;

 (*p)(1,2);} 9, 假定有 A 类, 并 A 类中有成员函数 max, 理解此程序中指向成员函数的指针的使用方式 int A :: max(int a,int b) {return a>b?a:b;} void main(){

 int (A :: *p)(int ,int );

  A

  a;

 p=A :: max;

 (a.*p)(1,2);}

 10, 有如下定义的类 complex, 并声明 add 函数为友元函数, 根据程序功能给出 add 函数的定义。

 add 函数完成两个 complex 对象求和运算。

 请写出程序运行结果。

  11, 定义 dog 类, 具有数据成员 name, 存放每条狗的名字, 同时完成如下功能:

 有数据成员 dogs能够记录以定义 dog 对象的个数, 并有成员函数 show 输出该当前已定义对象的个数。

 完成类的定义,并给出测试程序, 测试程序中先用 show 函数输出未定义对象时 dog 对象的数目, 然后定义三个 dog对象, 再输出 dog 对象的数目。

推荐访问: 第五章总结 第五章