C++ 派生类的有效交换方法
下面是一段代码片段,它本身就说明了这一点。谢谢大家!C++ 派生类的有效交换方法,c++,C++,下面是一段代码片段,它本身就说明了这一点。谢谢大家! class Foo : private std::vector<int> { public: void swap(Foo& x) { std::swap(bar, x.bar); // what goes here? } private: int bar; }; 类Foo:private std::vector { 公众: 无效掉期(Foo&x) { 标准:
class Foo : private std::vector<int>
{
public:
void swap(Foo& x)
{
std::swap(bar, x.bar);
// what goes here?
}
private:
int bar;
};
类Foo:private std::vector
{
公众:
无效掉期(Foo&x)
{
标准::交换(bar,x.bar);
//这里有什么?
}
私人:
int-bar;
};
私下从
向量
继承没有问题。我的错误是,我没有看到“私有”。总之,通常有比私有继承更好的设计技术。拥有vector类型的成员变量可能是一个更好的选择。@Andrea Bergia:这完全取决于您想要提供什么。虽然我从未使用过私有继承,但当派生类提供了容器功能的子集以及一些额外的操作时,我看到了它的使用。那里的聚合要求您将每个操作实现为转发调用,而在私有继承情况下,您可以使用指令重新声明它们(使用base\u t::push\u back;
——为了方便起见,使用typdef)
std::vector<int>::swap(x);
vector::swap(x);