深入解析enum.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入解析enum

1 enum是一个关键词,我们可以把它和class放到一块理解 为什么可以放到一块理解呢? ①因为我们的enum也可以定义类型,和class一样。如: Code: enum?weekday{Monday,Tuesday};?? 这里的weekday就是一种自定义类型。我们可以用这种类型来定义变量。 如: Code: weekday?day;?? 我们用自定义类型定义了一个变量day。 ②enum也有默认构造函数,拷贝构造函数,赋值函数。 我们的enum和类一样同样具有默认构造函数,拷贝构造函数,赋值函数。至于有没有析构函数我就不清楚了。:-) 甚至我们的enum在这方便比class还要强大,因为它可以自动生成有参构造函数,而我们的class只能为我们生成无参默认构造函数。 看个例子: Code: #include?iostream ?? using?namespace?std; ?? enum?weekday{Monday,Tuesday}; ?? int?main() ?? { ?? ????weekday?b?=?weekday();//调用默认构造函数,将b初始化为0 ?? ????cout??b??endl; ?? ????weekday?c(b);//调用拷贝构造函数 ?? ????cout??c??endl; ?? ????c?=?Tuesday; ?? ????weekday?d?=?c;?//调用拷贝构造函数 ?? ????cout??d??endl; ?? ????weekday?e; ?? ????e?=?d;?//调用赋值函数 ?? ????cout??e??endl; ?? ????return?0; ?? }?? ?从这个例子我们可以清楚的看到enum中默认构造函数,拷贝构造函数,赋值函数的应用。怎么样很神奇吧。还有一个更神奇的呢。enum可以自动为我们生成有参的构造函数。这点class做不到的。:-) Code: weekday?f?=?weekday(5); ?? ????cout??f??endl;?? 看,这就是enum为我们生成的有参的构造函数的应用。呵呵。不错吧。 哈哈。enum和class有这么多相似的地方,甚至在有些地方比class还强大些,我们是否可以把它们放到一块理解了呢。呵呵。。 小结: enum 和 class都可以定义自定义类型。 2 enum 和 class的不同 认真的同学也许早发现了。enum中的默认构造函数不像class中的那样可以自动调用,它必须由我们显示的调用它。怎么调用从上面大家就可以看出来。那类中的那种方式呢?看: Code: weekday?a; ?? cout??a??endl;?? 结果是未定义的。从这里我们就可以看出,默认的构造函数没有被调用。这点enum又有点靠近内置类型了。即:必须由我们显示的进行初始化,否则便是未定义的。那下面这个呢? Code: weekday?a(); ?? cout??a??endl;?? 哇,开始很牛啊。。:-),好像是在调用默认构造函数似的。但编译器却不愿意了,它发出了抱怨。。我们第一行错了吗?没有。是第二行。哈哈,奇怪吧。。其实编译器这里并没有把a当成一个变量来看,而是把它当成了一个函数了。奇怪不。。我们看个例子: Code: #include?iostream ?? using?namespace?std; ?? enum?weekday{Monday,Tuesday}; ?? weekday?a(); ?? int?main() ?? { ?? ?????a(); ?? } ?? weekday?a() ?? { ?? ????cout??hello??endl; ?? ????return?Monday; ?? }?? 运行下这个函数,大家就清楚了。。:-) 对于拷贝构造函数,赋值函数的使用enum和类是一样的。然而,类中可以由用户自定义函数,enum可以吗?哇。。 这个就不清楚啦。。我试着在enum里定义函数。编译器却对我火冒三丈。。我怕了。。若你和编译器的关系好,它让你定义了,千万别忘了通知我一声哈。。O(∩_∩)O哈哈~ 3 看一下enum的定义 说了老半天了,还没解释enum的定义呢。。罪过罪过。。若那位哥们等烦了,千万 Code: enum?weekday{Monday,Tuesday};?? 我们来看下这个定义。 一般格式 enum + 类型名?+?{ 常量名(可为多个)} +?; 其中类型名可以不要。常量名也可以不要(这时候就没啥具体意义了哈)。 enum定义出来的类型具体是什么类型呢?我们可以看下: Code: week

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档