iam*_*ind 60 c++ enums language-lawyer c++11
我们的时候,
struct E { enum E_ { HELLO }; }; // 'E' is inheritable
Run Code Online (Sandbox Code Playgroud)
那我们为什么需要,
enum class E { HELLO }; // 'E' is not inheritable
Run Code Online (Sandbox Code Playgroud)
IMO第二版不提供比第一版更多的功能.我不认为这enum class只是为了节省2个花括号{};!我错过了任何重要方面吗?
作为未成年人的问题,是有什么区别enum class和enum struct其他比语法(因为两者都具有public访问说明符)?
Nic*_*las 93
我们真的需要C++ 0x中的"枚举类"吗?
不,我们不"需要" enum class.我们可以通过其他方式获得足够的等效功能.但按照这种逻辑,我们并不需要C++中的很多东西.我们不需要"虚拟功能和继承",因为我们可以使用vtable等手动实现它.我们不"需要"成员职能; 这些可以通过让他们进行额外的论证来模仿.
语言功能的存在使程序员的生活更轻松.仅仅因为某些东西可以手动完成并不意味着它应该.
enum class 具有以下属性:
enum class,但大多数新功能都是如此.一旦你习惯它,没关系.enum class定义的效果.如果没有这个宏,你必须花费相当多的努力才能使所有的角落情况都能发挥作用.即便如此,有人必须编写并调试该宏.所以不,我们不"需要"它们.但它们仍然是语言的一个很好的补充.
Jam*_*lis 24
在第一种情况下,类型HELLO不是E,而在第二种情况下,类型HELLO是E.
为了更好地证明这一点很重要,请参阅Howard Hinnant对"枚举类"仿真或MSVC 10.0的可靠替代方案的回答.
enum classenum struct根据C++ 0xFDIS§7.2/ 2 ,它们是"语义等价的"(即相同).
Dav*_*vid 16
我想你需要阅读这些新枚举的其他优点
http://www.stroustrup.com/C++11FAQ.html#enum
| 归档时间: |
|
| 查看次数: |
28055 次 |
| 最近记录: |