C++第6章静态成员与友员.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 静态成员与友元函数 §6-1 静态成员 §6-2 友元 §6-3 const数据保护 §6-1 静态成员 6.1.1 静态成员的需要性 属于类的一部分,但既不适于用普通成员表示,也不适于全局变量表示的数据,用静态成员表示。 对象个数 对象链表头、尾指针 类的状态 声明为static的类成员为静态成员,解决同一个类的不同对象之间的数据和函数共享问题。 §6-1 静态成员 6.1.2 静态数据成员 类属性 实例属性:一个类的所有对象都具有的相同的属性,是指属性的个数、名称、数据类型相同,各个对象的属性值则可以互不相同,并随着程序的执行而变化。 类属性:描述类的所有对象的共同特征的一个数据项,对于任何对象实例,它的属性值是相同的。 在C++中,用静态数据成员来实现类属性。 §6-1 静态成员 6.1.2 静态数据成员 定义 静态数据成员在类定义中必须说明 static 数据类型 静态数据成员名; 公共静态数据成员可被类的外部访问,保护或私有静态数据成员只可被类的内部访问。 静态数据成员具有静态生命期 在定义的同时不能初始化 §6-1 静态成员 6.1.2 静态数据成员 初始化 静态数据成员要实际地分配空间,故不能在类声明中初始化(只能声明静态数据成员)。类定义只声明一个类的“尺寸与规格”,并不进行实际的内存分配。 静态数据成员不能在任何函数内分配空间和初始化 静态数据成员也不能在main()函数之前的全局数据声明处初始化。 静态数据成员说明应放在类的内部实现部分(成员函数定义)。 [static] 数据类型 类名::静态数据成员名=初值; §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 6.1.3 静态成员函数 作用:专门用来处理静态数据成员 定义:静态成员函数定义是类的内部实现, 属于类定义的一部分,它的定义位置与一般成员函数一样。 说明:在类定义中声明静态函数,只有public的函数才能从类的外部调用。 调用:访问静态成员函数时,不需要对象,如果用对象去引用静态成员函数只是用其类型。 §6-1 静态成员 6.1.3 静态成员函数 注意: 类中的任何成员函数都可以访问静态数据成员,但静态成员函数只能通过对象名访问对象的非静态数据成员,因为静态成员函数没有this指针。 访问非静态成员的操作都是非法的。 静态成员函数能对静态成员函数访问。 静态成员函数与非静态成员函数的根本区别是静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-1 静态成员 §6-2 友元 6.2.1 需要友元的原因 普通函数需要直接访问一个类的保护或私有数据成员。 友元提供了不同类对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。即通过友元的方式,一个一般函数可以访问一个类的私有数据,一个类可访问另一个类的私有数据。 方便编程,但破坏了类的封装。 §6-2 友元 6.2.2 友元函数 友元函数是在类声明中由关键字friend修饰的该类的非成员函数。友元函数可以是一个普通函数,也可以是其它类的成员函数,它虽然不是本类的成员函数,但在其函数体中可以通过对象名访问本类的私有和保护成员。即友元函数不是成员函数,它是类的朋友,因而能够访问类的全部成员。 友员的声明可在类内部任何位置,其定义则在类的外部,与类的成员函数定义放在一起。 class A { public: friend void fun(A); private: int x; }; void fun(A r){ cout r.xendl; } §6-2 友元 §6-2 友元 6.2.3 友类 类也可以声明为另一个类的友元,这时称为友元类(友类)。若A类为B类的友类,则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护数据。 friend class 类名; //在类定义中声明 友类的声明可在类内部任何位置。 class B { …… friend class A; …… }; §6-2 友元 §6-3 const数据保护 6.3.1 常引用 在说明引用时用const修饰 常引用所引用的对象不能被更新 §6-3 const数据保护 6.3.2 常对象 常对象的数据成员值在对象的整个生命期内不能被改变,即常对象必须进行初始化,而且不能被更新。 类名 const 对象名;

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档