网站大量收购闲置独家精品文档,联系QQ:2885784924

第四章类与对象2.doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章类与对象2

第 4 章 类和对象 (二) 前一章讲述了类和对象的若干基础知识,本章接着进一步对类和对象的其它方面内容进行讨论。 包括:指针、引用和数组; 常类型在类和对象方面的应用; 使用 new 和 delete 运算符对对象进行动态分配和释放。 本章将通过例子进一步熟悉类和对象在编程中的应用,从而进一步理解类和对象的作用。 §4.1 对象指针和对象引用 本节讲述:指向对象的指针和对象的引用的概念及在C++编程中的应用。 一、指向类的成员的指针 在C++中,可以说明指向类的数据成员和成员函数的指针。 指向数据成员的指针格式: 类型说明符(类名 :: * 指针名) 2.指向成员函数的指针格式: 类型说明符(类名 :: * 指针名)(参数表) 例如:设有如下一个类 A: class A { public: int fun(int b){return a*c+b;} A(int i){a=i;} int c; private: int a; }; ·定义一个指向类 A 的数据成员 c 的指针pc,其格式如下: int A::*pc=A::c; //c 是公有成员,在程序中可以这样定义。 ·定义一个指向类 A 的成员函数fun的指针pfun,其格式如下: int A::*pfun(int)=A::fun; 由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定A 类的一个对象,然后,通过对象来引用指针所指向的成员。 例如,给 pc 指针所指向的数据成员 c 赋值 8,可以表示为: A a; a.c=8 a . * pc=8; // . *—用来对指向类成员的指针来操作该类的对象的。 如果使用指向对象的指针来对指向类成员的指针进行操作时,使用-*运算符。例如: A * p=a; //a是类A的一个对象,p是指向对象a的指针。 p -* pc=8; 3.指向一般函数的指针的定义和调用: ·指向一般函数的指针的定义格式: 类型说明符 * 指向函数的指针名(参数表) ·给指向函数的指针的赋值格式: 指向函数的指针名=函数名 ·在程序中,使用指向函数的指针 调用 函数的格式: (* 指向函数的指针名)(实参表) 如果是指向类的成员函数的指针还应加上相应的对象名和对象成员运算符。 [例4.1]分析下列程序的输出结果 #include iostream.h class A { public: A(int i){a=i;} int fun(int b){return a*c+b;} b=5 int c; private: int a; }; void main() { A x(8); a=8 int A::*pc; //pc—指向类 A 的数据成员 c 的指针 pc=A::c; x.* pc=3; c=3 //对对象 x 的 c 成员赋值,? x.c=3; int (A::*pfun)(int); //pfun—指向类 A 的成员函数fun()的指针 pfun=A::fun; A *p=x; // p—指向类 A 的对象 x 的指针 cout(p-*pfun)(5)endl; //通过指向对象的指针p来调用指向类的成员函数的指针pfun,即使用指向对象的指针调用指向类的成员函数的指针所指向的成员函数。? p-fun(5) ? x.fun(5) } 执行该程序输出如下结果: 29 (a=8,b=5,c=3) 说明: 1. 该程序中,定义了一个指向类的数据成员的指针 pc 和一个指向类的成员函数的指针 pfun,并且对这个指针进行了赋值,请注意赋值的格式。 2. 程序中对指向类的成员的两个指针进行了引用和调用。其中: x.*pc=3; 实际上是对象 x 的 C 成员赋值,它是一个公有成员。等价于: x.c=3; 而 (p -*fun)(5) 通过指向对象的指针p来调用指向类的成员函数的指针pfun, 函数的实参为 5。这里要注意其调用格式。这是一个使用指向对象的指针调

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档