这个问题快把我逼疯了。我需要把它做对,这样我才能通过我的课程。感谢所有尝试它的人。
用 C++ 编写一个简单的程序来调查其枚举类型的安全性。在枚举类型上至少包含 10 种不同的操作,以确定哪些不正确或愚蠢的事情是合法的。
这个问题快把我逼疯了。我需要把它做对,这样我才能通过我的课程。感谢所有尝试它的人。
用 C++ 编写一个简单的程序来调查其枚举类型的安全性。在枚举类型上至少包含 10 种不同的操作,以确定哪些不正确或愚蠢的事情是合法的。
这是一个完全可操作的程序,显示了十种不同类型的枚举操作。详细信息将在代码中,参考将在帖子底部。
首先,了解枚举是什么非常重要。有关这方面的参考,请查看Enumerated Types - enums。在下面的代码中,我使用数学运算、按位运算符并使用枚举值将数组初始化为默认大小。
#include <iostream>
using namespace std;
enum EnumBits
{
ONE = 1,
TWO = 2,
FOUR = 4,
EIGHT = 8
};
enum Randoms
{
BIG_COUNT = 20,
INTCOUNT = 3
};
int main(void)
{
// Basic Mathimatical operations
cout << (ONE + TWO) << endl; // Value will be 3.
cout << (FOUR - TWO) << endl; // Value will be 2.
cout << (TWO * EIGHT) << endl; // Value will be 16.
cout << (EIGHT / TWO) << endl; // Value will be 4.
// Some bitwise operations
cout << (ONE | TWO) << endl; // Value will be 3.
cout << (TWO & FOUR) << endl; // Value will be 0.
cout << (TWO ^ EIGHT) << endl; // Value will be 10.
cout << (EIGHT << 1) << endl; // Value will be 16.
cout << (EIGHT >> 1) << endl; // Value will be 4.
// Initialize an array based upon an enum value
int intArray[INTCOUNT];
// Have a value initialized be initialized to a static value plus
// a value to be determined by an enum value.
int someVal = 5 + BIG_COUNT;
return 0;
}
上面完成的代码示例可以通过另一种方式完成,即为 EnumBits 重载 operator| 等。这是一种常用的技术,有关其他参考资料,请参阅如何在 C++ 中使用枚举作为标志?.
有关按位运算的参考,请查看C 和 C++ 中的位运算符:教程
使用 C++ 11,您可以通过其他方式使用枚举,例如强类型枚举。