清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 第6章类和对象
第6章 类和对象(二)
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 61对象指针和对象引用 1.指向类的成员的指针 (1)指向类的数据成员的指针 ①定义格式 〈类型〉〈类名〉∷〈指针名〉|=〈初值〉J ②赋值方法 〈指针名〉=&〈类名〉∴〈数据成员名〉;
6.1 对象指针和对象引用 1. 指向类的成员的指针 (1) 指向类的数据成员的指针 ① 定义格式 〈类型〉〈类名〉∷*〈指针名〉[=〈初值〉]; ② 赋值方法 〈指针名〉=&〈类名〉∷〈数据成员名〉;
清华大学出版社 000000 ③引用方法 TSINGHUA UNIVERSITY PRESS 使用类的对象引用时,〈对象名〉.*〈指针名 使用对象指针引用时,〈对象指针名〉->*〈指针名 例如, class publie int fun (int b) Breturn a*c+b A(int 1) {a=i;} int c private int a:
③ 引用方法 使用类的对象引用时, 〈对象名〉.*〈指针名〉 使用对象指针引用时, 〈对象指针名〉->*〈指针名〉 例如, class A { publie: int fun(int b) {return a*c+b;} A(int i) {a=i;} int c; private: int a; }
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 定义一个指向类A的数据成员c的指针pc,其格式如下: intA∴:*pc=&A∴c; 使用类A对象给pc所指向的数据成员c赋值,其格式如下 aa a. pc=10 使用指向类A对象指针p给pc所指向的数据成员c赋值,其格式 如下 aa A“p=&a; p>pc=10:
定义一个指向类A的数据成员c的指针pc,其格式如下: int A ∷ *pc=&A ∷ c; 使用类A对象给pc所指向的数据成员c赋值,其格式如下: A a; a.*pc=10; 使用指向类A对象指针p给pc所指向的数据成员c赋值,其格式 如下: A a; A *p=&a; p->*pc=10;
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS (2)指向类的成员函数的指针 ①定义格式 〈类型〉(〈类名〉∷*〈指向成员函数的指针名〉)(〈参数 表〉); ②赋值方法 〈指向函数的指针名〉=〈类名〉∷〈函数名〉; ③引用方法 使用类的对象引用时, (〈对象名〉·*〈指向成员函数的指针名〉)(〈参数表〉); 使用类的对象指针引用时, (〈对象指针名〉→*〈指向成员函数的指针名〉)(〈参数表));
(2) 指向类的成员函数的指针 ① 定义格式 〈类型〉(〈类名〉∷*〈指向成员函数的指针名〉)(〈参数 表〉); ② 赋值方法 〈指向函数的指针名〉=〈类名〉∷〈函数名〉; ③ 引用方法 使用类的对象引用时, (〈对象名〉·*〈指向成员函数的指针名〉)(〈参数表〉); 使用类的对象指针引用时, (〈对象指针名〉->*〈指向成员函数的指针名〉)(〈参数表〉);
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 在上例类A中,定义一个指向成员函数unO的指针pfu,其 格式如下 int(A∴:*pfun)(int) 给指向成员函数的指针pfun赋值,其格式如下: pfun=A∴fun; 使用类A对象通过pfun调用它所指向的成员函数的格式如下 a a (a "fun)(5); 使用指向类A对象的指针通过pfu调用它所指向的成员函数的 格式如下: a a a*p=&a (p->pfun)(5); 参见[例61]
在上例类A中,定义一个指向成员函数fun( )的指针pfun,其 格式如下: int(A∷*pfun) (int); 给指向成员函数的指针pfun赋值,其格式如下: pfun=A∷fun; 使用类A对象通过pfun调用它所指向的成员函数的格式如下: A a; (a.*pfun) (5); 使用指向类A对象的指针通过pfun调用它所指向的成员函数的 格式如下: A a; A *p=&a (p->*pfun) (5); 参见[例6.1]
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 2.对象指针 (1)对象指针的定义和赋值 已知对象a是类A的一个对象,pa是一个指向对象a的指针, 定义如下: A a; A *pa=&a (2)对象指针可作函数参数和返回值 参见[例62]。 3.对象引用 1)对象引用的定义和赋值 已知对象引用r是类A的一个对象a的引用,其说明格式如下: Aaa&ra=a (2)对象引用可作函数参数及返回值 参见[例63]
2. 对象指针 (1) 对象指针的定义和赋值 已知对象a是类A的一个对象,pa是一个指向对象a的指针, 定义如下: A a;A *pa=&a; (2) 对象指针可作函数参数和返回值 参见[例6.2]。 3. 对象引用 (1) 对象引用的定义和赋值 已知对象引用ra是类A的一个对象a的引用,其说明格式如下: A a;A &ra=a; (2) 对象引用可作函数参数及返回值 参见[例6.3]
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 4.this指针 (1)this指针的特点 this指针是一种系统自动创建的指向当前对象的指针。当使用 对象调用一个成员函数时,系统将创建this指向该对象。 this指针通常被隐含使用,有时也被显式使用。 2)ths指针的应用 参见[例64]
4. this指针 (1) this指针的特点 this指针是一种系统自动创建的指向当前对象的指针。当使用 对象调用一个成员函数时,系统将创建this指向该对象。 this指针通常被隐含使用,有时也被显式使用。 (2) this指针的应用 参见[例6.4]
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 62对象数组和对象指针数组 1.对象数组 (1)定义格式 〈类名〉〈数组名〉[〈大小〉 (2)对象数组的值 对象数组可以被赋初值,也可以被赋值。对象数组的每个元 素都是同一类的对象值。 参见[例65]
6.2 对象数组和对象指针数组 1. 对象数组 (1) 定义格式 〈类名〉〈数组名〉[〈大小〉] … (2) 对象数组的值 对象数组可以被赋初值,也可以被赋值。对象数组的每个元 素都是同一类的对象值。 参见[例6.5]
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 2.对象指针数组 (1)定义格式 〈类名〉*〈数组名〉[(大小〉 2)对象指针数组的值 对象指针数组的每个元素都是指向同一个类的对象指针,可 以给它赋初值,也可以给它赋值。其值为对象的地址值。 参见[例69]
2. 对象指针数组 (1) 定义格式 〈类名〉*〈数组名〉[〈大小〉]… (2) 对象指针数组的值 对象指针数组的每个元素都是指向同一个类的对象指针,可 以给它赋初值,也可以给它赋值。其值为对象的地址值。 参见[例6.9]