C++从零开始(上)——类的相关知识.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C从零开始(上)——类的相关知识,从零开始学习股票知识,从零开始作品相关,英语基础知识从零开始,网上学英语从零开始,类似从零开始的小说,类似从零开始的穿越女,从零开始练瑜伽,从零开始,从零开始学化妆

C++从零开始(上)——类的相关知识 前面已经介绍了自定义类型的成员变量和成员函数的概念,并给出它们各自的语义,本文继 续说明自定义类型剩下的内容,并说明各自的语义。 权限 成员函数的提供,使得自定义类型的语义从资源提升到了具有功能的资源。什么叫具有 功能的资源?比如要把收音机映射为数字,需要映射的操作有调整收音机的频率以接收不同 的电台;调整收音机的音量;打开和关闭收音机以防止电力的损耗。为此,收音机应映射为 结构,类似下面: structRadiogram { double Frequency; /* 频率 */ void TurnFreq(double value ); // 改变频率 float Volume; /* 音量 */ void TurnVolume( float value ); // 改变音量 float Power; /* 电力 */ void TurnOnOff(bool bOn); // 开关 bool bPowerOn; // 是否开启 }; 上面的Radiogram::Frequency、Radiogram::Volume 和Radiogram::Power由于定义为了结 构Radiogram 的成员,因此它们的语义分别为某收音机的频率、某收音机的音量和某收音机 的电力。而其余的三个成员函数的语义也同样分别为改变某收音机的频率、改变某收音机的 音量和打开或关闭某收音机的电源。注意这面的“某”,表示具体是哪个收音机的还不知道, 只有通过成员操作符将左边的一个具体的收音机和它们结合时才知道是哪个收音机的,这也 是为什么它们被称作偏移类型。这一点在下一篇将详细说明。 注意问题:为什么要将刚才的三个操作映射为结构Radiogram 的成员函数?因为收音机 具有这样的功能?那么对于选西瓜、切西瓜和吃西瓜,难道要定义一个结构,然后给它定三 个选、切、吃的成员函数??不是很荒谬吗?前者的三个操作是对结构的成员变量而言,而 后者是对结构本身而言的。那么改成吃快餐,吃快餐的汉堡包、吃快餐的薯条和喝快餐的可 乐。如果这里的两个吃和一个喝的操作变成了快餐的成员函数,表示是快餐的功能?!这其 实是编程思想的问题,而这里其实就是所谓的面向对象编程思想,它虽然是很不错的思想, 但并不一定是合适的,下篇将详细讨论。 上面我们之所以称收音机的换台是功能,是因为实际中我们自己是无法直接改变收音机 的频率,必须通过旋转选台的那个旋钮来改变接收的频率,同样,调音量也是通过调节音量 旋钮来实现的,而由于开机而导致的电力下降也不是我们直接导致,而是间接通过收听电台 而导致的。因此上面的Radiogram::Power、Radiogram::Frequency等成员变量都具有一个特 殊特性--外界,这台收音机以外的东西是无法改变它们的。为此,C++提供了一个语法来实 现这种语义。在类型定义符中,给出这样的格式:权限:。这里的权限为public、protected 和private 中的一个,分别称作公共的、保护的和私有的,如下: classRadiogram { protected:double m_Frequency;float m_Volume; float m_Power; private: bool m_bPowerOn; public: void TurnFreq(double );void TurnVolume( float );void TurnOnOff (bool ); }; 可以发现,它和之前的标号的定义格式相同,但并不是语句修饰符,即可以 struct ABC{ private: };。这里不用非要在private:后面接语句,因为它不是语句修饰符。从它开始, 直到下一个这样的语法,之间所有的声明和定义而产生的成员变量或成员函数都带有了它所 代 表 的 语 义 。 比 如 上 面 的 类 Radiogram , 其 中 的 Radiogram::m_Frequency 、 Radiogram::m_Volume 和Radiogram::m_Power 是保护的成员变量,Radiogram::m_bPowerOn 是私有的成员变量,而剩下的三个成员函数都是公共的成员函数。注意上面的语法是可以重 复的,如:structABC {public: public:long a; private

您可能关注的文档

文档评论(0)

tianma2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档