- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c++ch04数据的共享与保护.ppt
1 标识符的作用域与可见性(1) 1.1 标识符的作用域 1 标识符的作用域与可见性(2) 1.1 标识符的作用域--局部作用域 1 标识符的作用域与可见性(3) 1.1 标识符的作用域—类作用域 1 标识符的作用域与可见性(4) 1.1 标识符的作用域—命名空间作用域 1 标识符的作用域与可见性(5) 1.1 标识符的作用域—命名空间作用域(续) 1 标识符的作用域与可见性(6) 1.1 标识符的作用域—命名空间作用域(续) 1 标识符的作用域与可见性(7) 1.1 标识符的作用域—例1(分析程序的运行结果) 1 标识符的作用域与可见性(8) 1.2 标识符的可见性 2 对象的生存期(1) 对象的生存期:从诞生到结束。 2 对象的生存期(2) 对象的生存期—例2(分析变量的生存期) 2 对象的生存期(3) 对象的生存期—例2(续) 2 对象的生存期(4) 对象的生存期—例3(静态动态生存期对象) 3 类的静态成员(1) 3 类的静态成员(2) 3 类的静态成员(3) 3.1 静态数据成员 3 类的静态成员(4) 3.1 静态数据成员(例4) 3 类的静态成员(5) 3.1 静态数据成员(例4续) 3 类的静态成员(5) 3.1 静态数据成员—初始化及访问(例4续) 3 类的静态成员(7) 3.2 静态函数成员 3 类的静态成员(8) 3.2 静态函数成员—例4改进 3 类的静态成员(8) 4 类的友元(1) 引入 4 类的友元(2) 4.1 友元函数 4 类的友元(3) 4.1 友元函数—例5 4 类的友元(4) 4.1 友元函数—例5(续) 4 类的友元(5) 4.1 友元函数—例5(续)函数声明为友元函数 4 类的友元(6) 4.2 友元类 4 类的友元(7) 4.2 友元类—例 5 共享数据的保护(1) 5 共享数据的保护(2) 5.1 常对象 5 共享数据的保护(3) 5.2 用const修饰的类成员—常成员函数(例6) 5 共享数据的保护(4) 5.2 用const修饰的类成员—常成员函数 5 共享数据的保护(5) 5.2 用const修饰的类成员—常数据成员 5 共享数据的保护(6) 5.2 用const修饰的类成员—常数据成员(例7) class A{ public: void dispaly() {coutxendl;} int getX(){return x;} friend class B; private: int x; }; class B{ public: void set(int i); void display();private: A a; }; void B::set(int i) { a.x=i; { 返回主菜单 虽然数据隐藏保证了数据的安全性,但各种形式的数据共享又不同程度地破坏了数据的安全。 对于既需要共享又需要防止改变的数据应该声明为常量。 常量在程序运行期间是不可改变的,有效地保护了数据 常对象的数据成员值在整个生存期内不能被改变。 const 类型说明符 对象名; class A{ public: A(int i,int j):x(i),y(j){} …… private: int x; }; const A a(3,4); 类型说明符 函数名(参数表)const; #include iostream using namespace std; class R { public: R(int r1,int r2):r1(r1),r2(r2){} void print(); void print()const; private: int r1,r2; }; const关键字可以用于对重载函数的区分 void R::print() { coutr1“aaar2endl; } void R::print()const { coutr1“bbbr2endl; } int main(){ R a(5,4); a.print(); const R b(20,52); b.print(); return 0; } void R::print() {coutr1“ aaa r2endl;} void R::print()const {coutr1“ bbb r2endl;} 运行结果: 5 aaa 4 20 bbb 52 通过常对象只能调用常成员函数 使用const说明的数据成员为常数据成员 如在一个类中说明了常数据成员,那么任何函数中都不能对该成员赋值 构造函数对该数据成员初始化。 class A { public: A(int i); void pri
文档评论(0)