假设我有一个包含多个方法的类。我想将其分成多个类。我可以继承这些类,或者可以创建包含这些类的成员变量。哪种方法更有效和可用?
假设我有以下类:
class ClassRoom {
vector<int> BoysIds;
vector<int> GirlsIds;
public:
void RegisterBoy(int i);
void RegisterGirl(int i);
int GetTotalBoys();
int GetTotalGirls();
};
我已将其分为多个类,如下所示:
class Boys {
vector<int> BoysIds;
public:
void RegisterBoy(int i);
int GetTotalBoys();
};
class Girls {
vector<int> GirlsIds;
public:
void RegisterGirl(int i);
int GetTotalGirls();
};
继承一个类更有效率吗?
class ClassRoom : public Boys, public Girls {
};
创建成员更有效率?
class ClassRoom {
public:
Boys m_boys;
Girls m_girls;
};
public
继承)代表“是一种”的关系(例如,狗是动物,所以类Dog
可以继承自Animal
),而聚合(成员关系)代表类之间的所有权或关联关系(例如,Car
可能包含一个SteeringWheel
,并且有一个指向Owner
的指针(因为汽车通常与所有者相关联,但所有者并不是汽车的一部分)。当成员关系更符合设计时使用继承往往会使您的代码更难理解,也更难正确实现。 - Peter