【发布时间】:2013-02-26 10:26:58
【问题描述】:
我有以下课程。
class CA {
...
};
class CB: public vector<CA> {
...
};
我应该如何实现CB的复制构造函数?即,
CB(CB& cb).
如何将cb的向量的内容复制进去?
【问题讨论】:
-
请不要派生标准容器。
-
@LightnessRacesinOrbit:派生
std::vector有什么问题?我记得我这样做时的一种情况,只是为了向我的向量中添加一些额外的数据成员...... -
@LihO,标准容器析构函数不是虚拟的,如果您通过基类指针将其删除,则可能是 UB。所以你可以这样做,但你必须非常小心。
-
@LihO 私有继承会相当安全,除了它允许您访问基类的受保护方法,这可能是不受欢迎的。见this gotw。
-
@LihO 我以前也见过这样的代码,而且效果很好。这就是为什么我这样实现我的程序的原因。你知道如何实现复制构造函数吗?还是应该在创建向量后复制向量的每个元素?
标签: c++ vector constructor copy-constructor