- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三 类与对象㈢——静态成员、常量成员、友元、对象成员
一、实验目的
1.理解静态数据成员、静态成员函数的作用,熟悉其应用;
2.理解常量对象、常量数据成员、常量成员函数作用,熟悉相互关系及应用;
3.熟悉友元函数、友元类的定义及应用;
4.熟悉对象成员(容器类)的应用;
5.进一步熟悉类与对象的应用及编程。
二、实验学时
课内实验:2课时 课外练习:2课时
三 本实验涉及的新知识
㈠ 静态成员
静态成员分为静态数据成员及静态成员函数。
1.静态数据成员
⑴ 静态数据成员的定义(类中定义)
格式:
static 类型 数据成员名表;
⑵ 静态数据成员的作用
静态数据成员在一个类中只有一个拷贝,属于一个类(或者说属于类的第一个对象),所有对象都共享静态成员。
静态数据成员是连接各个对象的桥梁,可用来取代全局变量,主要用于各个对象都共享的公用数据,如:总数的统计、平均数等。
⑶ 说明
① 静态数据成员可以说明为公有成员、私有成员或保护成员,但一般不说明为公有成员;
② 静态数据成员同其它数据成员一样,不能在类中进行初始化(不分配内存空间);
③ 静态数据成员由于属于类(不依赖任何对象),应在程序开始运行时即生成,必须在任何函数之外进行初始化操作;
格式:
类型 类名::静态数据成员=初值;
④ 使用静态数据成员取代全局变量,使数据更为安全;
⑤ 当在类中需要共享某一数据成员时通常定义为静态数据成员;
⑥ 静态数据成员与静态对象是两个完全不同的概念,前者(静态数据成员)是在类中定义的,是类的所有对象共享的数据成员,而后者(静态对象)是指对象存储在静态存储区。
2.静态成员函数
⑴ 静态成员函数的定义
静态成员函数是在定义类的成员函数时,在成员函数名前加上static。
⑵ 静态成员函数的调用方法
① 用类名调用
格式:
类名::静态成员函数名(实参表);
② 用对象调用
格式:
对象名.静态成员函数名(实参表);
⑶ 说明
① 静态成员函数可以在类内部定义(必须加上static),也可在类外定义,即在类体内声明,在类体外定义,定义时与普通成员函数相同;
② 静态成员函数无this指针(this指针属于某一对象,静态成员属于一个类),只能访问静态数据成员,不能访问普通数据成员,因此静态成员函数专门用来访问静态数据成员;
③ 当在类中定义有静态数据成员时,通常应定义静态成员函数来访问静态数据成员。
㈡ 常量成员函数、常量数据成员及常量对象
在C++中可以用const定义常量对象(也称为常对象)、常量成员函数(也称为常成员函数)、常量数据成员(也称为常数据成员)。
1.常量成员函数的定义
⑴ 在类中定义:
返回类型 成员函数名(参数表) const
{ 函数体 }
⑵ 在类外定义
类中声明:
返回类型 成员函数名(参数表) const ;
类外定义:
返回类型 类名::成员函数名(参数表) const
{ 函数体 }
2.常量数据成员的定义
定义格式:
const 数据类型 成员名
或:
数据类型 const 成员名
3.常量对象的定义
定义格式:
类名 const 对象名表;
或:
const 类名 对象名表
4.说明
⑴ 常量对象只能在定义时初始化,其数据成员的值不能改变。
⑵ 常量对象只能调用常量成员函数,不能调用普通成员函数;而普通对象既可调用普通成员函数,也可以调用常量成员函数。
⑶ 普通成员函数可以访问本类的常量成员函数,而常量成员函数不能访问本类的普通成员函数。
⑷ 常量成员函数与普通成员函数同名时,构成函数的重载,其参数类型和个数可以相同,而用const加以区分。
⑸ 常量数据成员必须在构造函数中通过初始化列表进行初始化,初始化后值不能改变。
⑹ 常量数据成员及成员函数隶属于某一对象(与静态数据成员的差异)。
㈢ 友元
1.友元的概念
在C++中提供了一种类以外的函数访问类的私有成员、保护成员的方法,即将这些函数定义为类的友元。
2.友元的种类及应用
⑴ 友元函数
定义方法:在类中进行声明时,在声明的前面加上friend。
说明:
① 友元函数不是类的成员函数,除非确因成员函数使用频繁,需要提高程序的执行效率而定义为友元函数外,一般不要定义。
② 友元函数可以访问对象的私有成员和保护成员,只是在类中声明时加上friend,但它不是成员函数,定义时不能在函数名前加上“类名::”。
③ 友元函数无this指针,一般至少应带有一个入口参数,通过入口参数传递的对象名来引用该对象的成员。
④ 友元函数主要用于运算符的重载。
⑵ 友元成员
友元成员是指一个类的成员函数可以是另一个类的友友元函数,这样就可以通过一个类的成员函数访问另一个类的私有成员或保
文档评论(0)