- 1、本文档共37页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 特殊函数与成员;5.1 对象成员的初始化
5.2 静态成员
5.3 友元函数
5.4 const对象
5.5 数组和类
5.6 指向类成员函数的指针
5.7 求解一元二次方程;5.1 对象成员的初始化;冒号“:”后由逗号隔开的项组成成员初始化列表
参数表给出了为调用相应成员所在类的构造函数时应提供的参数
如果初始化列表某项的参数表为空,则列表中相应的项可以省略
对象成员构造函数的调用顺序取决于这些对象成员在类中说明的顺序,与它们在成员初始化列表中给出的顺序无关。
当建立A类对象时,先调用对象成员的构造函数,初始化对象成员,然后才执行A类的构造函数,初始化A类中的其它成员。
析构函数的调用顺序与构造函数相反。;例5.1:分析下面程序中析构函数与构造函数的调用顺序。;注意:
例中非对象成员的初始化在初始化列表中进行。也可以构造函数的函数体中进行(看书上例子)。
当初始化const成员和引用成员时,必须通过成员初始化列表进行。如;5.2 静态成员;例5.2:分析下面程序的输出结果。;静态数据成员只能说明一次,必须在文件作用域的某个地方进行定义。
在进行初始化时应进行成员名限定。如
int Test::x=25;
在对象建立之前,静态成员已经存在。
除静态数据成员的初始化外,静态成员遵循类的其他成员所遵循的访问限制。静态数据成员通常被说明为私有的,而通过定义公有的静态成员函数来访问静态数据成员。
由于static不是函数类型中的一部分,所以在类声明之外定义静态成员函数时,不使用static。在类中定义的静态成员函数是内联的。;可以使用两种方法访问静态成员
成员名限定
对象名(与普通成员函数同)
推荐使用第一种方法,因为静态成员是类的成员而不是对象的成员。
类中任何成员函数都可以访问静态成员。
静态成员函数没有this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。如,
sfunc()的定义就是通过引用对象名r访问数据成员n。;静态成员函数与一般成员函数有如下不同:
可以不指向某个具体对象,只与类名连用。
在没有建立对象之前,静态成员已经存在。
静态成员是类的成员,不是对象的成员。
静态成员为该类的对象共享,它们被存储在一个公用的内存中。
没有this指针,所以除非显式地把指针传给它们,否则不能存取类的数据成员。
静态成员函数不能被说明为虚函数(见8.2节)。
静态成员函数不能直接访问非静态函数。
要区分静态成员与静态对象。
静态对象是使用关键字static声明的类的对象,应注意它的构造函数与析构函数的调用特点。;例5.3:使用静态对象的例子。;静态对象:
第一次遇到对象定义时,调用构造函数,且直到程序结束之前只调用一次。
在整个程序结束前调用析构函数(只调用一次)。
普通对象(在for循环中):
由于是局部对象,所以当遇到“test b;”时调用构造函数,而本次循环结束时调用析构函数。;5.3 友元函数;类本身的友元函数;友元函数不是Point类的成员,所以没有this指针,在访问该类的成员时必须使用对象名,而不能直接使用成员名。所以dist函数就是一个普通函数,与其它函数不同的是:它在类中说明;可以访问该类对象的私有成员。
友元函数一般在类中说明,在类外定义,其作用域的开始点在它的说明点,结束点和类的作用域相同。
友元说明可以出现于类的私有或公有部分。属于类接口的一部分。
使用友元的目的是提高程序效率。
友元使用的优点和缺点:
优点:类的设计者不必在考虑好该类的各种可能使用情况后再设计该类,而可以根据需要,通过使用友元增加类的接口。
缺点:它允许友元访问对象的私有成员,从而破坏了类的封装和数据隐藏,使程序的可维护性差。
使用时应注意:友元函数可以声明时定义。如果在类外定义,不能再使用friend关键字。;将成员函数用做友元
一个类的成员函数可以通过friend说明为另一个类的友元。;将一个类说明为另一个类的友元
可以将一个类说明为另一个类的友元。这时,整个类的成员函数均具有友元函数的性能。
友元声明方法:
friend class 类名;;5.4 const对象;例5.7:常数据成员初始化和常引用作为函数参数。;常引用作为函数参数
使用常引用作为函数的参数,传送的是地址。但有时希望仅将参数的值提供给函数使用,但不允许改变参数的值,这时可以使用常引用作为参数。如
void display(const double r);
常引用r作为函数参数,在函数体内不能改变r所引用的对象(即不破坏实参)。
常对象
在对象名前使用const可以声明常对象,声明时必须同时进行初始化,而且不能被更新。定义语法如下:
类名 const 对象名(参数列表); //注意初始化
如,
Base const A(1
您可能关注的文档
- 第5章查询2010讲述.ppt
- 第5章机械加工精度讲述.ppt
- 第5章有线电视系统分析讲述.ppt
- 第5章时变电磁场讲述.ppt
- 第5章水资源供需平衡讲述.ppt
- 第5章时钟系统和低功耗结构讲述.pptx
- 第5章汇编语言程序设计3讲述.ppt
- 第三章--信用、利息与利率机制详解.pptx
- 第5章汽油机点火系讲述.pptx
- 第5章城市土地利用规划讲述.ppt
- 甘肃省白银市会宁县第一中学2025届高三3月份第一次模拟考试化学试卷含解析.doc
- 2025届吉林市第一中学高考考前模拟生物试题含解析.doc
- 四川省三台县芦溪中学2025届高三下第一次测试生物试题含解析.doc
- 2025届江苏省启东市吕四中学高三适应性调研考试历史试题含解析.doc
- 浙江省宁波市十校2025届高三二诊模拟考试历史试卷含解析.doc
- 甘肃省甘南2025届高考生物必刷试卷含解析.doc
- 河北省石家庄市一中、唐山一中等“五个一”名校2025届高考历史四模试卷含解析.doc
- 江西省南昌市进贤一中2025届高考生物考前最后一卷预测卷含解析.doc
- 甘肃省白银市会宁县第四中学2025届高三第二次模拟考试历史试卷含解析.doc
- 宁夏银川市宁夏大学附属中学2025届高考化学押题试卷含解析.doc
文档评论(0)