派生类的高效交换方法

pic*_*c11 3 c++

这是一个代码自己的代码片段.谢谢!

class Foo : private std::vector<int>
{
public:
    void swap(Foo& x)
    {
        std::swap(bar, x.bar);
        // what goes here?
    }
private:
    int bar;
};
Run Code Online (Sandbox Code Playgroud)

And*_*gia 9

std::vector<int>::swap(x);
Run Code Online (Sandbox Code Playgroud)

但是,你不应该继承矢量.

由于注入类名,可以将其重写为

vector::swap(x);
Run Code Online (Sandbox Code Playgroud)

  • 私有地继承`vector`没有问题. (3认同)