全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六讲 数据的共享与保护1、标识符的作用域与可见性 概念:标识符在程序中的有效范围。变量名相同,局部更优先。namespace MySpace class Class1 . ; class Class2 . ;b的作用域a的作用域c的作用域1)局部作用域函数的形参,在块中声明的标识符,其作用域自声明处起,限于块中,例如:void fun(int a) int b = a; cin b; if (b 0) int c; . 3)命名空间命名空间的声明namespace 命名空间名 各种声明(函数声明、类声明、)命名空间可以解决类名、函数名等的命名冲突1、可见性运行结果:i=6, a=2i=6, a=3i是动态生存期a是静态生存期标识符应声明在先,引用在后。如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。#include using namespace std;void fun() static int a=1; int i=5; a+; i+; couti=i,a=aendl; int main() fun(); fun();3、类的静态成员静态数据成员 用关键字static声明 该类的所有对象维护该成员的同一个拷贝 必须在类外定义和初始化,用(:)来指明所属的类。静态成员函数 用关键字static声明的成员函数。 可以引用属于该类的静态数据成员或静态成员函数,如果访问非静态成员,必须通过对象名。class Point public:int Point:count=0;int main() Point a(4,5); couta.getY(); Point:showCount(); Point b(7,8); coutb.getY(); Point: showCount(); return 0; Point(int x=0, int y=0) : x(x), y(y) count+; Point(Point &p); Point() count-; int getX() return x; int getY() return y; static void showCount() cout count endl; private: int x, y; static int count; ;4、类的友元:一个类主动声明哪些其他类或函数是他的朋友,进而给它们提供本类的访问特许。例:使用友元函数计算两点距离友元函数是在类声明中由关键字friend修饰说明的非成员函数,在它的函数体中能够通过对象名访问 private 和 protected成员class Point public:Point(int x=0, int y=0) : x(x), y(y) int getX() return x; int getY() return y; friend float dist(Point &a, Point &b);private:int x, y;float dist( Point& a, Point& b) double x = a.x - b.x; double y = a.y - b.y; return static_cast(sqrt(x * x + y * y);int main() Point p1(1, 1), p2(4, 5); cout The distance is: ; cout dist(p1, p2) endl; return 0;5、友元类若一个类为另一个类的友元,则此类的所有成员都能访问对方类的私有成员。void B:set(int i) a.x=i;void B:display() a.display();class A friend class B;public: void display() cout x endl; private: int x;class B public: void set(int i); void display();private: A a;5、共享数据的保护数据的共享影响了数据的隐藏性,如:static数据成员、友元函数、友元类:对既需要共享又需要防止变化的数据声明为常量。 普通常量: const 数据类型 常量名称=常量值;5、常对象: 常对象的数据成员值在对象的整个生存期间内不能改变。5、用const修饰的类成员调用void print() const调用void print()void R:print() cout r1 : r2 endl;void R:print() const cout r1 ; r2 endl;int main() R a(5,4); a.print(); const R b(20,52); b.print(); return 0;常成员函数使用const关键字说明的函数。 常成员函数不更新对象的数据成员。常成员函数说明格式: 类型说明符 函数名(参数表)const;通过常对象只能调用它的常成员函数。#includeusing namespace std;class R public: R(int r1, int r2) : r1(r1), r2(r2) void print(); void print() const;private: int r1, r2;5、用const修饰的类成员常数据成员使用const关键字说明的类成员数据。常数据成员只能通过初始化列表来获得初值。常数据成员在初始化列表中赋初值const int A:b=10; A:A(int i) : a(i) void A:print() cout a : b endl;int main() A a1(100), a2(0); a1.print(); a2.print()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大连装修合同
- 2025年高中数学高考冲刺试卷 函数专题训练
- 2025年Python二级考试专项突破模拟试卷 精讲精练
- 2026国网辽宁省电力校园招聘(提前批)笔试模拟试题浓缩500题附答案详解(预热题)
- 买房没有借款合同
- 2026国网浙江省电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题含答案详解(b卷)
- 2026秋季国家管网集团西部管道公司高校毕业生招聘笔试参考题库(浓缩500题)附答案详解(夺分金卷)
- 2026国网甘肃省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题附答案详解
- 料棚拆解合同
- 备战2026中考英语语法百题分类训练 专题12 主谓一致100题(中考真题+中考模拟)(解析版)
- 二十届四中全会测试题及参考答案
- 2025年中国RWS行业调研报告
- 2025年入团考试测试题目及答案
- 2025年入团积极分子题库及答案(完整版)
- GB/T 3920-2024纺织品色牢度试验耐摩擦色牢度
- 23G409先张法预应力混凝土管桩
- 2025中级消防设施操作员作业考试题及答案(1000题)
- 媒体公关-课件3-公共关系工作程序
- 余杭区房屋装修备案申请表
- 水利水电工程施工组织与管理课件-1讲
- 丹东海上风电项目可行性研究报告参考范文
评论
0/150
提交评论