- 1、本文档共52页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]第4章-类与对象二
类与对象(二)
前一章我们讲述了类与对象的关系及对象的创建、撤消、成员函数的特性和友元,本章进一步讨论类与对象中更高层次的内容。这些内容包括指针、引用、对象数组以及常类型在类和对象方面的应用,同时还包括使用new和delete运算符对对象进行动态分配与释放。本章还将通过一些算例进一步熟悉类和对象在编程中的应用,从而进一步理解类和对象的作用。
本章讨论的主要内容有:
⒈ 对象指针和对象引用
⒉ 对象数组
⒊ 常类型
⒋ 堆对象
⒌ 类型转换
对象指针和对象引用
对象的指针与对象的引用与变量的指针和变量的引用有着类似的概念和应用,引入这两个概念的目的,是为完成对对象的间接访问、堆对象的构造及其它们作为函数的参数。而对于指针与对象的关系来讲,将其分为成员指针与对象指针两类。本节主要讨论指向对象的指针和对象的引用这两个概念和它们在C++编程中的应用。
一.指向类成员的指针与指向类对象的指针
在C++中,指向类成员的指针有指向类数据成员和成员函数的指针两种。引用这两类指针的目的是为了完成对类数据成员与成员函数间接访问的目的,但要达到这个目的,首先要完成指针变量的定义,其次确立指针与类成员之间的指向关系。下面,讨论如何完成指针的定义及指向关系的确立。
指向类数据成员的指针定义格式如下:
类型说明符 类名::*指针变量名
指向类成员函数的指针定义格式如下:
类型说明符 (类名::*指针变量名) (形参的特征标)
对象指针和对象引用
对象指针和对象引用
定义一个指向类A成员函数fun的指针pfun,其格式如下:
int (A::*pfun)(int)=A::fun;
由于类不是运行时存在的对象,因此,在使用这类指针时,需要首先指定A类的一个对象,然后,通过对象来引用指针所指的成员。
例如,给pc指针所指向的数据成员c赋值8,可以表示如下:
A a;
a.*pc=8;
其中,运算符.*是用来对指向类成员的指针来操作该类对象的成员的。
如果使用指向对象的指针对指向类成员的指针进行操作时,使用运算符-*。
例如:
A *pa=a;
p-*pc=8;
对象指针和对象引用
而通过指向成员函数的指针调用成员函数的格式如下:
(对象名.*指向成员函数的指针名)(实参列表)
(对象指针名-*指向成员函数指针名)(实参列表)
((*对象指针名).*指向成员函数指针名)(实参列表)
下面给出一个使用指向类成员指针的例子。
[例4.1] 分析下列程序的运行结果。
#includeiostream.h
class A
{
public:
A(int i) { a=i; }
int fun(int b) { return a*c+b; }
int c;
private:
int a;
};
对象指针和对象引用
void main()
{
A x(8);
int A::*pc;//定义指向类数据成员的指针
pc=A::c;//确立指向关系
x.*pc=3;
int (A::*pfun)(int);//定义指向类成员函数的指针
pfun=A::fun;//确立指向关系
A *p=x;//定义指向类对象的指针
cout(*p.*pfun)(5)endl;
cout(p-*pfun)(6)endl;
}
对象指针和对象引用
二.对象指针与对象的引用作函数参数
1.对象指针作函数参数
前面我们讨论过对象的使用之一就是对象可作为函数的参数(实参与形参),同样对象指针也可作为函数的参数,对象指针作函数的参数是对象指针的主要应用。使用对象指针作为函数的参数要比使用对象作函数参数更普遍的原因在于:
⑴ 实现传址调用。可在被调用函数中改变调用函数的参数对象的值,实现函数之间的信息传递。
⑵ 使用对象指针作函数的形参,当调用函数时,是将实参对象的地址值传给形参,而不进行副本的拷贝,这样可提高程序的运行效率,减少时间与内存资源的开销。
这里至关重要的是,对象指针可作函数的形参与实参,当对象指针作函数的实参时,它必须有确定的指向。当对象指针作函数的形参时,与其结合的实参要求是对象的地址值。
下面通过一算例说明对象指针作函数参数的应用。
对象指针和对象引用
[例4.2] 分析下列程序的运行结果。
#includeiostream.h
class M
{
public:
M() { x=y=0; }
M(int i,int j) { x=i;y=j; }
void copy(M *);
void setxy(int i,int j) { x=i;y=j; }
void print() { coutx,yendl; }
private:
int x,y;
};
void M::c
文档评论(0)