1 / 3
文档名称:

4.5 类与对象的进一步用法.doc

格式:doc   页数:3
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

4.5 类与对象的进一步用法.doc

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

4.5 类与对象的进一步用法.doc

文档介绍

文档介绍:类与对象的进一步用法
本节将进一步讨论类与对象使用的一些基本工具,而有关高级设计使用技巧,在后续章节中再作分析和讲解。
类对象指针
利用指向对象的指针来访问对象成员,与通过指针访问结构变量的形式相同。但是,对于一个复杂的类对象,特别是类的成员存在不同访问权限、继承限制、消息机制等问题,如何认识对象指针与普通指针的差异,正确地使用指针的长处,是要认真探讨的问题。
下面是一个对象指针的例子:
class myclass{. . .};
int main()
{
myclass ob(120);//定义myclass类的对象ob
myclass *p;
p=&ob;//使p指向ob
. //可以使用p->member_name操作
.
}
注意:语句myclass *p;是创建一个指向myclass类对象的指针,而不是创建一个对象。
(1)、指向类数据成员的指针与普通指针不同:
①必须考虑数据成员的存取权限,即受限于数据封装保护。
②必须考虑到其所属的类范围。
(2)、指向类成员函数的指针必须具备的条件:
①与成员函数的返回类型相同。
②与成员函数的参数表完全相同。
③与成员函数所属类相同。
(3)、指向静态成员的指针的用法:
由于静态成员只有一个存储副本,因此在定义指向静态成员的指针时,与一般指针相同。但仍必须有类范围,且其函数的返回值类型和参数表必须相同。
Class stap
{
private:
static int val;
public:
static void set(int n){. . .}
.
.
};
void (*sp)(int)=&stap::set;//指向成员函数的指针。
int *mp=&stap::val;//指向私有成员的指针。
注意存取限制,上面的语句在友元函数中是可以用的。
使用静态成员指针,不通过该类对象,与一般指针变量使用方法一样,如:
*mp=4;sp(4);
对象数组
同一类的若干对象的集合组成对象数组。其定义形式与一般数组类似,例如:
plex{. . .};
complex ob_array[10];//plex类的10个对象组成的数组
plex *ob_array=plex[10];
访问其成员可以使用如下形式:
ob_array[i].class_member;//
应注意避免的问题:
(1)、对类对象数组中的元素初始化,必须通过该类的构造函数来进行。
(2)、若在定义带有类的对象数组时,不想立即对数组中对象赋初值,其构造函数中必须含有一个不带参数的或是缺省参数的构造函数。
(3)、如果程序中以new分配数组存储空间,则将来释放此类数组所占用的存储空间使用语句delete ob_array;是有问题的。应当使用如下形式:
delete []ob_array;//系统自动计算数组的容量。
这样指明共有多少对象元素释放,编译器才会逐个调用构构函数来释放。
友元函数
友元函数(friend function)不是类的成员函数,但它可以访问类的私有元素。这是设计者希望不通过类的成员函数去访问类的私有成员时使用的方式。即友元函数是在类的封装上开了