- 1、本文档共65页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4章节 类与对象
第4章 类与对象; 本章主要内容:;4.1 类 ;1. 类的定义 ;C++类定义的格式: ; class Student //定义学生类Student
{
public: //声明类成员
void Getinfo(char* pname,char* pid,char Sex,
int a,double s);
void modify(float s);
void display();
private:
char* name;
char* id;
char sex;
int age;
double score;
}; //类定义以分号结束 ;类定义和使用时应注意: ;;2 访问控制 ;; ●类的成员函数是实现对封装的数据进行操作的惟一途径,是现实类的行为属性的成员。
●一般将成员函数声明为函数原型,在类外具体实现成员函数。
●如果成员函数已经在类中定义,则无须在类外实现。
●类中定义的成员函数自动成为内联函数。 ;;2. 内联成员函数 ;4.3 对象 ;1. 对象的定义 ;
●必须在定义了类之后,才可以定义类的对象;
●类定义仅提供该类的类型定义。
仅仅定义了类,系统并不会分配存储空间,只有定义了对象后,编译系统才会在内存中预留空间。
; 声明了类及其对象以后,就可以访问对象的公有成员(包括数据成员和成员函数)。
对象成员的访问包括:
●圆点访问形式
●指针访问形式;(1) 圆点访问形式 ;;New 运算符介绍;New 运算符举例;●对象是类的实例,在创建了对象以后,编译系统将给对象分配存储空间。
●不同对象的区别主要表现在两个方面:
对象名:即对象的标识符(外在区别);
对象属性:即数据成员的值,(内在区别)
●对象在定义的时需要初始化。
●对象生命期结束时要进行清理工作。
C++中对象的创建与初始化、对象生命期结束时的清理工作,分别由构造函数和析构函数完成。 ; 构造函数的功能是在定义对象时由编译系统自动调用来创建对象并初始化对象。
构造函数的函数名与类名相同。其定义格式如下: ; ●构造函数的函数名与类名相同;
●构造函数可以有任意类型的参数,但没有函数返回值类型;
●构造函数一般被定义为公有成员;
●构造函数在创建对象时由编译系统自动调用;
●构造函数只能一次性地影响对象的数据成员初值。 ; 如果类中没??定义构造函数,系统将自动生成一个默认形式的构造函数,用于创建对象,默认构造函数形式: ?;使用构造函数时应注意: ;2. 析构函数 ;析构函数的自动调用;默认析构函数 ;3. 复制构造函数 ;复制构造函数的定义格式;复制构造函数的调用 ;复制构造函数的特点: ;默认复制构造的形式 ;4. 浅复制与深复制 ;4.5 静态成员 ;
static 静态成员的定义;
例如:
static int total;
static void display(); ;
类名::静态成员名;;2. 静态数据成员 ;3. 静态成员函数 ;应用静态成员函数的优点 ;4.6 友元 ;1. 友元的作用 ;●非对称性(单向的)
若B是A的友元,若没有特别声明,则A不是B的友元。
●非传递性
若B是A的友元,C是B的友元,若没有特别声明,则C不是A的友元。 ;2.友元函数 ;●友元函数可以访问类中的私有数据成员,但友元函数不是类的成员函数;
●友元函数可以是一个普通函数,也可以是另外一个类的成员函数;
●友元函数不是类的成员,因而与成员函数存在区别,友元函数不能直接使用对象名,而必须通过对象操作数据成员 。;3. 友元类 ;
friend 类名; ;4.7 类作用域及对象的生存期 ;1. 类作用域 ;2. 对象的生存期 ;●局部对象。局部对象是被定义在一个程序快或函数体内的对象,它的作用域范围小、生存期短。
●静态对象。静态对象被定义在一个文件中,它的作用域从定义时开始到文件结束时止,它的作用域范围大,生存期也较长。
●全局对象。全局对象的作用在域整个程序中,它的作用域范围最大、生存期也最长。 ; 一般情况下,如果C++程序中出现两个变量、函数名或类名的名字完全相同,就会产生冲突。
解决命名冲突的办法有两个:
●第一种解决方法是重新使用不同的标识符名,但有时为了程序的可读性,必须使用相同的标识名。
文档评论(0)