- 1、本文档共77页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章详解对象 《面向对象程序设计》 三、详解对象 内容提要 3.1 多个同类对象信息管理的问题 3.2 对象的存储 3.3 对象指针 3.4 对象引用 3.5 共享数据的保护 3.6 对象数组 3.7 字符串对象 3.8 对象成员 提出问题 编写一个程序实现小型公司的工资管理,能够存储这些员工的编号和月工资,并显示全部信息。要求使用一个静态数据成员来存储公司员工编号基数,新员工编号将在创建对象的同时自动在基数上增加。 员工类声明 //employee.h //头文件 class Employee //时间类的声明 { public: //外部接口,公有成员函数 Employee(); void Display(); private: //私有数据成员 int no; //编号 float salary; //月工资 static int maxno; //编号基数 }; 员工类实现 //employee.cpp //实现文件 #include employee.h //包含类的声明所在的头文件 #include iostream using namespace std; int Employee::maxno=1000; Employee::Employee() //无参构造函数的实现 { no=++maxno; cout月工资: ; cinsalary; } void Employee::Display() { cout编号: no, 本月工资: salaryendl; } 主程序实现 //main.cpp //实现文件 #include employee.h //包含头文件 #include iostream using namespace std; int main() { Employee e1; Employee e2; Employee e3; Employee e4; e1.Display(); e2.Display(); e3.Display(); e4.Display(); return 0; } 提出问题 在上面例子程序中,主函数用重复的语句处理各位员工的信息,在实际中不可取,如何修改? 分析问题 同类变量可以组成数组,那么对象也可以建立数组。因此,可以建立一个员工信息数组,然后用循环语句来完成同样的处理。 为了解决上述问题,我们需要进一步了解对象,如对象数组及相关内容。 首先了解对象的存储。 当一个C++对象被创建时,有两件事会发生: (1)为对象分配内存。 (2)调用构造函数来初始化内存。 3.2 对象的存储 作为特殊的变量形式,对象在哪个位置被创建以及创建时为对象分配不同的内存区域决定了对象的作用域和生存期。对象的作用域与生存期的概念来源于变量的作用域与生存期。 3.2.1变量的作用域 变量有效性的范围称为变量的作用域。变量作用域是从空间角度,即变量在程序中定义的位置角度来分析的。 归纳起来,变量有4种不同的作用域: 函数作用域 块作用域 函数原型作用域 文件作用域 1.函数作用域:在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外不能使用这些变量。 2.块作用域:块是一对花括号括起来的一段程序单元。在块中定义的变量,其作用域从声明处开始,直到块结束的右花括号。 3.函数原型作用域:函数原型中的参数,其作用域始于“(”,结束于“)”。 4.文件作用域:不在前述各个作用域中定义的变量,具有文件作用域,变量的文件作用域开始于声明点,结束于文件尾。一般来说,在文件一开始定义的全局变量就具有文件作用域。 //example.cpp int num; //num的作用域开始 float Area(float radius); //radius的作用域仅在于 int main() { int i=1; //i的作用域开始 for(;i4;i++) { int j=5; //j的作用域开始 j++; coutjendl; //正确 } //j的作用域结束 coutj; //错误,在j的作用域外访问 return 0; } //i的作用域结束 float Area(float radius) { …… } //num的作用域结束 文件作用域是全局的,其他三者都是局部的。 从作用域角度,可以把变量分为全局变量和局部变量。 全局变量在整个程序包括的所有文件中都有效,它可以被程序中的所有函数使用,由系统默认赋初值; 局部变量则仅限于所在函数或语句块内有效,如果没有显式初
您可能关注的文档
最近下载
- (完整)婚介登记表.doc
- 浙江省宁波市区县社区街道乡镇村名称统计.pdf
- 法雷奥供应商手册supplierqualitymanual2104rev09资料.pdf
- 2023年汕头市潮阳区卫健系统招聘医学类专业技术人员笔试真题.docx VIP
- 2024年义务教育化学课程标准2022年版(多选题)考试专项题库及答案.docx
- 海阳市各级文物保护单位一览表(2024版).docx VIP
- 2025届高考英语模拟卷(新高考Ⅰ卷)两套(word版有答案).docx
- 2025年建设美丽乡村示范村实施方案.pdf VIP
- 论金宇澄小说《繁花》的艺术特色.docx VIP
- 国际金融案例分析题参考答案.docx
文档评论(0)