假设我们有一个如下所示的层次结构。是不是一定要调用虚基类A的operator=方法?
class A
{ ... }
class B : virtual public A
{ ... }
class C : virtual public A
{ ... }
class D : public B, public C
{
D& operator = (const D& other)
{
if(this != &other)
{
// A::operator = (other); is this line correct???
B::operator = (other);
C::operator = (other);
....
}
return *this;
}
}
最佳答案
正如评论中的@Emadpres 所述,这取决于 operator=
在层次结构中的处理方式。如果 B 和 C 使用 A 的 operator=
实现,则您不必在 D 的实现中显式使用它。
请记住,为了保持语义的直截了当,您可能应该在 B 和 C 中使用 A 的实现。在重载时尝试一直沿着层次结构树往上走是引入大量复杂性的好方法。
关于c++ - 运算符 = 在 C++ 中的虚拟继承中重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30467144/