我正在尝试编写以下复合类的有效实现:
class composite{
vector<base_class *> Vec;
//Other useful constants
public:
composite(vector<base_class*>);
//Other useful operations...
};
我的问题是关于类的构造函数和实例化,特别是对象 Vec。目前,我使用下面概述的相当粗略的实现。我的实现是内存高效的。我几乎是 C++ 的新手,所以我不确定我在这里是否有最佳解决方案......
我使用多态性将不同的派生类存储在向量中,例如
vector<base_class *> Vec1;
Vec1.reserve(2);
class1 * C1 = new class1(....);
Vec1.push_back(C1);
class2 * C2 = new class(....);
Vec1.push_back(C2);
其中 class1 和 class2 是 base_class 的派生类。然后我将 Vec1 传递给复合的构造函数,如下所示:
composite::composite(vector<base_class*> Vec1){
Vec.reserve(Vec1.size());
Vec.swap(Vec1);
//etc...
}
我的感觉是这在内存上非常有效,因为 Vec1 在构造后将是空的(它的元素已被交换到 Vec)。另一方面,这似乎很浪费,因为我实际上是将 Vec1 复制到 Vec 中。我有更好的方法吗?我可以以某种方式将向量 Vec1 嵌入到复合中吗?提前致谢!