面试题答案
一键面试- 定义枚举类型
Weekday
并编写输出函数:
#include <iostream>
// 定义表示一周七天的枚举类型
enum class Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
// 函数接收Weekday枚举类型作为参数并输出对应的星期几的名称
void printWeekday(Weekday day) {
switch (day) {
case Weekday::Monday:
std::cout << "Monday" << std::endl;
break;
case Weekday::Tuesday:
std::cout << "Tuesday" << std::endl;
break;
case Weekday::Wednesday:
std::cout << "Wednesday" << std::endl;
break;
case Weekday::Thursday:
std::cout << "Thursday" << std::endl;
break;
case Weekday::Friday:
std::cout << "Friday" << std::endl;
break;
case Weekday::Saturday:
std::cout << "Saturday" << std::endl;
break;
case Weekday::Sunday:
std::cout << "Sunday" << std::endl;
break;
}
}
- 枚举类型的底层存储方式:
- 在C++中,对于普通的枚举(非
enum class
),如果没有显式指定底层类型,编译器会自动选择一个能够容纳枚举常量值的整型类型作为底层存储类型。例如,如果枚举常量的值范围在0
到255
之间,编译器可能会选择unsigned char
作为底层存储类型;如果值的范围更大,可能会选择int
等。 - 对于
enum class
(强类型枚举),如果没有显式指定底层类型,默认的底层类型是int
。可以显式指定enum class
的底层类型,例如:enum class Weekday : unsigned char { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
,这样Weekday
枚举类型就以unsigned char
作为底层存储类型。
- 在C++中,对于普通的枚举(非
你可以在main
函数中调用printWeekday
函数来测试,例如:
int main() {
Weekday today = Weekday::Tuesday;
printWeekday(today);
return 0;
}