我有一个派生自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到基类的特化,但是没有找到有用的东西。
答案 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;
}