- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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。这里要注意其调用格式。这是一个使用指向对象的指针调
您可能关注的文档
- 教师资格考试和应对(贵阳)-李艳荣.ppt
- 教科版科学六年级下册《化学变化伴随现象》PPT(含课堂作业和答案).ppt
- 教科版四年级科学下册减慢食物变质速度.ppt(含课堂作业和答案).ppt
- 教科版三年级科学上册第四单元第三课《谁流得更快一些》PPT含(课堂作业和答案).ppt
- 教职工代表大会提案征集和处理办法.doc
- 第八章 uclinux与应用开发ok.ppt
- 教研室在校本教研中地位和作用.doc
- 教育信息化区域推进策略和实践研究 937.ppt
- 教育学(表格总结 第“教育--教育学和社会发展”章)和其50道最重点简答论述.doc
- 教科版品德和社会四年级上册第三单元《做聪明消费者》第三主题《我是理财小能手》ppt.ppt
最近下载
- 2025届大湾区普通高中毕业年级联合模拟考试(一)英语试卷(含答案) 原卷.pdf
- 高考英语真题倒装句单项选择汇编(含答案).docx
- 兰吉尔电表说明书.doc
- 2024-2025学年北京顺义区九年级初三(上)期末数学试卷(含答案).pdf
- T∕CSEM 0024-2024 智慧消防 火灾防控系统建设要求.pdf
- 苏轼《蝶恋花 春景》古诗词PPT.pptx
- 《急诊预检分诊》课件.ppt VIP
- 房屋抵还欠款合同协议书范本模板 .pdf VIP
- 高中语文 2023-2024学年北京市石景山区高一(上)期末语文试卷完整版720979162.pdf VIP
- 全国职业大赛(中职)ZZ036新能源汽车维修赛项赛题库共计10套.pdf
文档评论(0)