- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * 示例代码(1) a.cpp extern int y; int func(int v); int main() { int z = 1; y = func(z); return 0; } * (main的代码) lea 0x4(%esp),%ecx and $0xfffffff0,%esp …… 代码段(.text) a.o 符号表 …… 深 度 探 索 迪新掉糯数谰借荒扫料巍业缩锨勉辨篓浮殊饱互吹徒呼漏毕山尸荣矢船铁C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 示例代码(2) * (func的代码) push %ebp mov %esp,%ebp …… 代码段(.text) (x的初值) 3 初始化的数据段(.data) (y) 未初始化的数据段(.bss) 符号表 …… b.o b.cpp int x = 3; int y; int func(int v) { return v + x; } 深 度 探 索 者夜呕所蹦蜂愚屡婶涨试疮扩卡彪瞻桨花痢境开鹿代果岛鹊方慌柒宜盂苑C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 代码的连接与执行 连接 将各段合并 将符号表综合 根据重定位信息,确定代码中用到的全局地址 代码的执行 操作系统首先将文件从磁盘读入,初始化各段——一些静态数据就在此时被初始化 从引导代码开始执行,引导代码启动main,main返回后,引导代码通知操作系统程序结束 * 深 度 探 索 粒垮颗哲沛罢仇蔡胰砧蜂驻音逆吊艰返效菩晴近怂绘间善峭水蹭擦椅页密C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 * 小结与复习建议 主要内容 作用域与可见性、对象的生存期、数据的共享与保护、友元、编译预处理命令、多文件结构和工程 达到的目标 深入理解程序的结构、模块间的关系、数据共享。 实验任务 实验五 凉倔饼用殉恋币苇庆寸硷偿丢按瑟迎氓阿旧宿牡晌田艘清豫虫假肪跳轴体C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 * * * 要点: 首先介绍块的概念,然后介绍块中标识符的作用域。 块是一对花括号括起来的一段程序单元。 在块中声明的标识符,其作用域从声明处开始,直到块结束的右花括号。 * * * * * * * * * * * * * * * * * * * * * * * * * Point::Point(Point p) { x = p.x; y = p.y; count++; } int Point::count=0; int main() { //主函数实现 Point a(4,5); //声明对象A coutPoint A,a.getX(),a.getY(); Point::showCount(); //输出对象个数 Point b(a); //声明对象B coutPoint B,b.GetX(),b.GetY(); Point:: showCount(); //输出对象个数 return 0; } 32 品豁宜靖潮镐偷御巴搅青氯秘裳柄钧尊狼婚闭酮柴擎掸胞绊诵臭向胶叙府C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 * 友元 友元是C++提供的一种破坏数据封装和数据隐藏的机制。 通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。 可以使用友元函数和友元类。 为了确保数据的完整性,及数据封装与隐藏的原则,建议尽量不使用或少使用友元。 友 元 懈田形煞灵任荣墟抡抹沼合醒壬灵汪喻绷凹河介况淤翰必懈浆坊椎盎掖线C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 * 友元函数 友元函数是在类声明中由关键字friend修饰说明的非成员函数,在它的函数体中能够通过对象名访问 private 和 protected成员 作用:增加灵活性,使程序员可以在封装和快速性方面做合理选择。 访问对象中的成员必须通过对象名。 友 元 卞倾莆瘫见伪堵却荷狂治畦惕眷狐爽皱盈爸烧臆置荆第软比轩擞奉诅戴钥C++ 第五章 作用域与可见性C++ 第五章 作用域与可见性 * 例5-6 使用友元函数计算两点距离 #include iostream #include cmath class Point { //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)
文档评论(0)