面试题答案
一键面试#include <iostream>
class Order {
public:
// 定义枚举类型表示订单状态
enum class OrderStatus {
PENDING,
PROCESSING,
COMPLETED,
CANCELED
};
// 更新订单状态的成员函数
void updateStatus(OrderStatus newStatus) {
currentStatus = newStatus;
}
// 获取并打印当前订单状态的成员函数
void getStatus() const {
switch (currentStatus) {
case OrderStatus::PENDING:
std::cout << "订单状态: 待处理" << std::endl;
break;
case OrderStatus::PROCESSING:
std::cout << "订单状态: 处理中" << std::endl;
break;
case OrderStatus::COMPLETED:
std::cout << "订单状态: 已完成" << std::endl;
break;
case OrderStatus::CANCELED:
std::cout << "订单状态: 已取消" << std::endl;
break;
}
}
private:
OrderStatus currentStatus;
};
关于作用域解析运算符(::)
在类中定义枚举类型时,如果在类外部使用该枚举类型,需要使用作用域解析运算符(::)来访问。这是因为枚举类型定义在类的作用域内,使用作用域解析运算符可以明确指定要访问的枚举类型属于哪个类的作用域。这样可以避免命名冲突,特别是在多个类中可能定义了相同名称的枚举类型时。例如,如果在类 Order
外部想要定义一个 OrderStatus
类型的变量,就需要写成 Order::OrderStatus status;
,以表明这里的 OrderStatus
是 Order
类中的枚举类型。