【发布时间】:2021-07-30 21:45:52
【问题描述】:
我尝试用 C++ 构建一个客户经理程序。在我的程序中,有Customer类(基类),Guest(派生自客户),VIP(派生自Guest),main中有一个vector
Class Customer {
protected:
string name;
public:
Customer();
Customer(string name);
};
Class Guest : public Customer {
public:
Guest();
Guest(string name);
}
Class VIP : public Guest {
private:
int VIPPoints;
public:
VIP();
VIP(string name);
}
【问题讨论】:
-
创建一个接受
Guest&&的VIPctor -
缺乏对他们行为差异的可靠解释,看起来包含
bool guest; std::optional<int> VIPpoints;的类可以完成这项工作。 -
有很多方法可以做到这一点。例如,我个人可能只有一个
Customer类,带有std::vector<Customer> guests和std::vector<Customer> vips以及一些数据结构来跟踪点。如果需要 OOP,我可能会将客户的“状态”拆分为一个单独的类型,以便Customer有一个Status,其状态可能是VIP或GUEST,或者甚至可能使Status具有继承层次结构,Customer没有继承树。
标签: c++ oop inheritance polymorphism abstraction