派生类的复制赋值运算符

时间:2017-05-30 13:38:11

标签: c++

我有一个派生自A的B类。实现了复制构造函数和赋值运算符。我有B的复制构造函数,并希望实现B的赋值。我的方法(很可能不正确)是

B& B::operator=(const B& other) {
    B tmp (other);
    std::swap <A>(*this, tmp);
    std::swap (m_member, other.m_member);
}

这样的事可以吗?我已经在网上查找了std :: swap到基类的特化,但是没有找到有用的东西。

1 个答案:

答案 0 :(得分:0)

您可以检查此stackoverflow线程(calling operators of base class... safe?),了解如何在基类中使用operator =。

我不明白你为什么要使用swap。你应该做这样的事情:

B& B::operator=(const B& other) {
    A::operator = (other);
    this->m_member = other.m_member;
    return *this;
}