- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch11_数据共享和成员特性
C++实用教程 第11章 数据共享和成员特性 目录 11.1 静态成员 11.2 友元 11.3 成员其他特性 11.4 this指针 11.5 综合应用实例 11.1 静态成员 如果类的某些属性希望他的所有对象共享,怎么办? 数据共享途径: 途径一:全局变量或全局对象 具有局限性 破坏程序模块结构 属于程序,而不属于类 途径二:静态成员 11.1 静态成员 静态成员是类中的成员,是类的一部分,在类外不可访问,从而起到保护作用。 静态成员有静态数据成员和静态成员函数之分。 静态数据成员与静态变量相似,具有静态生存期,是在类中声明的全局数据成员,能被同一个类的所有对象所共享。 公有静态成员函数不仅可以通过类对象来访问,还可通过“类名::静态成员函数”的形式在程序中直接调用。 11.1.1 静态数据成员 使用静态数据成员可以节省内存,因为它只存储一处,供所有对象共享。静态数据成员的值是可修改的,但它对每个对象都是一样的。 1. 定义和使用 与静态变量相似,静态数据成员是静态存储(static)的,它必须按下列两个步骤进行: 在类中使用关键字static声明静态数据成员。 在类外为静态数据成员分配内存空间并初始化。 其定义格式如下: [例Ex_StaticData] 静态数据成员的使用示例 #include iostream using namespace std; class CSum { public: CSum(int a = 0, int b = 0) // A { nSum += a+b; } int getSum() { return nSum; } void setSum(int sum) { nSum = sum; } private: static int nSum; }; int CSum::nSum = 0; int main() { CSum one(10, 2), two; coutone: sum = one.getSum()endl; couttwo: sum = two.getSum()endl; two.setSum(5); coutone: sum = one.getSum()endl; couttwo: sum = two.getSum()endl; return 0; } 2. 几点说明 (1)静态数据成员是类中的成员,它的访问属性同普通数据成员一样,可以为public、private和protected。 (2)静态数据成员的实际定义和初始化本身是不受public、private和protected等访问属性限制的。 (3)静态数据成员可看成是类中声明、类外定义的静态全局变量,具有静态生存期,在程序中从实际定义时开始产生,到程序结束时消失。 (4)当静态数据成员为public时,在类外对该成员的访问和引用可通过对象,也可直接引用。 例: class CSum { //… public: Static int nSum; }; int CSum::nSum=0; int main() { CSum one; one.nSum=10; CSum::nSum=12; coutone.nSumendl; return 0; } 11.1.2 静态成员函数 静态成员函数和静态数据成员一样,都属于类的静态成员,但它们都不专属于某个对象,而是所有对象所共享的成员。对公有(public)静态成员函数来说,除可用对象来引用外,也可通过“类名::成员”直接来引用。 在类中,静态数据成员可以被成员函数或静态成员函数所引用。但反过来,静态成员函数却不能直接引用类中说明的非静态成员。 例: class CSum { public: static void ChangeData(int data) { nSum=data; //Error } public: int nSum; }; [例Ex_StaticMember] 静态成员的使用示例 11.1 静态成员 11.2 友元 11.3 成员其他特性 11.4 this指针 11.5 综合应用实例 11.2.1 友元概述 11.2.2 友元函数 友元函数分为友元外部函数和友元成员函数。 当一个函数f是A类的友元,还是另一个类B的成员函数时,这样的友元称为友元成员函数。 若f不属于任何类的成员,这样的友元称为友元外部函数。友元外部函数常直接称为友元函数。 1. 友元函数(友元外部函数) 友元函数不属于类中的成员函数,是在类中声明的一个外部函数 友元函数的定
您可能关注的文档
- BT项目融资模式简介.ppt
- business_follies蓝色风格卡通模板.ppt
- b内酰胺类抗生素36.ppt
- B超图胎儿发育过程.ppt
- B内酰胺类抗生素.ppt
- B云计算数据基础设施何小朝.pptx
- c++13讲模板函数与模板类.ppt
- B受体拮抗剂及钙离子拮抗剂在心血管临床应用进展.ppt
- C09编译预处理.ppt
- c9(编译预处理).ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)