从这个和这个问题来看,我的印象是从原始类型继承会导致编译器错误.但是,以下代码在Ideone上编译并生成预期输出.
#include <iostream>
enum class Test : unsigned short int
{
TEST, TEST2, TEST3, TEST4
};
int main() {
// your code goes here
Test ans = Test::TEST3;
if(ans == Test::TEST3)
{
std::cout << "Here" << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
事实上,这class也是enum改变前两个问答的答案吗?这是标准定义明确的行为吗?
Tar*_*ama 25
这并不意味着继承,这会选择枚举的基础类型.底层类型是整数类型,用于表示枚举器值.
您可以在此示例中看到差异:
#include <iostream>
enum class tiny : bool {
one, two
};
enum class bigger : long {
some, lots
};
int main(int argc, char *argv[])
{
std::cout << sizeof(tiny::one) << '\n'; //prints 1
std::cout << sizeof(bigger::some) << '\n'; //prints 8
}
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,您可以指定范围(即class)和未范围的枚举的基础类型.
enum class在C++ 11中添加了允许您指定枚举的基础类型.它重用继承语法作为类比,但它不是继承.
| 归档时间: |
|
| 查看次数: |
4130 次 |
| 最近记录: |