- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、私有数据成员的使用1.取值和赋值成员函数面向对象的约定就是保证所有数据成员的私有性。一般我们都是通过公有成员函数来作为公共接口来读取私有数据成员的。某些时候,我们称这样的函数为取值和赋值函数。取值函数的返回值和传递给赋值函数的参数不必一一匹配所有数据成员的类型。#include iostream.hclass Date{int mo, da, yr;public:Date(int m,int d,int y) { mo=m; da=d; yr=y; }int getyear() const { return yr; }void setyear(int y) { yr = y; }};int main(){Date dt(4,1,89);coutdt.getyear()endl;dt.setyear(97);coutdt.getyear();return 0;}上面的例子很简单,不分析了。要养成这样的习惯,通过成员函数来访问和改变类中的数据。这样有利于软件的设计和维护。比如,改变Date类内部数据的形式,但仍然用修改过的getyear()和setyear()来提供访问接口,那么使用该类就不必修改他们的代码,仅需要重新编译程序即可。2.常量成员函数注意上面的程序中getyear()被声明为常量型,这样可以保证该成员函数不会修改调用他的对象。通过加上const修饰符,可以使访问对象数据的成员函数仅仅完成不会引起数据变动的那些操作。如果程序声明某个Date对象为常量的话,那么该对象不得调用任何非常量型成员函数,不论这些函数是否真的试图修改对象的数据。只有把那些不会引起数据改变的函数都声明为常量型,才可以让常量对象来调用。3.改进的成员转换函数下面的程序改进了从Date对象到CustomDate对象的成员转换函数,用取值和赋值函数取代了使用公有数据成员的做法。(以前的程序代码在上一帖中)#include iostream.hclass CustomDate{int da,yr;public:CustomDate() {}CustomDate(int d,int y) { da=d; yr=y; }void display() const {coutYR-DAENDL;}int getday() const { return da; }void setday(int d) { da=d; }};class Date{int mo,da,yr;public:Date(int m,int d,int y) { mo=m; da=d; yr=y; }operator CustomDate() const;};Date::operator CustomDate() const{static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};CustomDate cd(0,yr);int day=da;for(int i=0;i cd.setday(day);return cd;}int main(){Date dt(11,17,89);CustomDate cd;cd=dt;cd.display();return 0;}注意上面的程序中Date::operator CustomDate()声明为常量型,因为这个函数没有改变调用它对象的数据,尽管它修改了一个临时CustomDate对象并将其作为函数返回值。二、友元前面已经说过了,私有数据成员不能被类外的其他函数读取,但是有时候类会允许一些特殊的函数直接读写其私有数据成员。关键字friend可以让特定的函数或者别的类的所有成员函数对私有数据成员进行读写。这既可以维护数据的私有性,有可以保证让特定的类或函数能够直接访问私有数据。1.友元类一个类可以声明另一个类为其友元,这个友元的所有成员函数都可以读写它的私有数据。#include iostream.hclass Date;class CustomDate{int da,yr;public:CustomDate(int d=0,int y=0) { da=d; yr=y; }void display() const {coutYR-DAENDL;}friend Date; //这儿};class Date{int mo,da,yr;public:Date(int m,int d,int y) { mo=m; da=d; yr=y; }operator CustomDate();};Date::opera
您可能关注的文档
- 信息检索第五篇 收录引用证明.pptx
- 第九章 编写批处理自动制作Win8PE.docx
- 第二章 NMC技术顾问培训.ppt
- 主板各种分类要领.ppt
- 通信软件与通信协议5.ppt
- 梁吉业-面向大数据的高效特征选择和聚类算法(CRSSC-CWI-CGrC 2013).pdf
- 第四章 服装CAD款式设计.ppt
- 怎样使用三大检索工具(SCI、EI、CPCI-S).pptx
- 转基因克隆动物课件.ppt
- 第三章 电力能源管理系统说明书.pdf
- 2025年广东省茂名市化州市高三下学期物理基础题、中档题型强化训练.docx
- 2025年广东省茂名市信宜市高三二模物理试卷及答案.docx
- 2025年广东省茂名市化州市高三下学期考前物理适应性演练(二)试题.docx
- 2025年广东省茂名市信宜市高三下学期4月联考物理试卷.docx
- 客房员工年终工作总结范文报告.pdf
- 客房卫生服务员年终总结.pdf
- 2025年广东省肇庆市鼎湖区高三下学期第八周周测物理试卷.docx
- 客房主管工作总结2020.pdf
- 2025年广东省肇庆市鼎湖区高三下学期考前物理适应性演练(二)试题.docx
- 2025年广东省肇庆市端州区高三下学期第八周周测物理试卷.docx
最近下载
- 国标阀门型号编制方法JBT308-2004.PDF
- 2024年福建省能源石化集团有限责任公司春季校园招聘455人笔试参考题库附带答案详解.pdf
- 76G-3预应力长向圆孔板.pdf
- 数字媒体艺术_梦境主题“梦幻之旅”插画绘本设计.docx VIP
- 演示文稿国际结算的几种方式.ppt VIP
- C被遗弃的少女 das verlassene magdlein声乐正谱五线谱钢琴伴奏.pdf
- 七年级下数学数形结合附答案解析.pdf
- 教科版科学四年级下册 第三单元 岩石与土壤 5 岩石、沙和黏土.ppt VIP
- 软件系统试运行报告.doc VIP
- DLT 284_输电线路杆塔及电力金具用热浸镀锌螺栓与螺母.pdf
文档评论(0)