代码之家  ›  专栏  ›  技术社区  ›  fulmicoton

在C++中调用母类运算符的常用方法

  •  2
  • fulmicoton  · 技术社区  · 15 年前

    让我们假设我有一个从类动物继承的类狗, 您可能希望在dog::operator=中插入对animal::operator=的调用。

    最可读/最常见的写入方式是什么?

    我想我认识这两个…

    static_cast<Animal*>(this)->operator=(other);
    

    this->Animal::operator=(other);
    
    2 回复  |  直到 14 年前
        1
  •  12
  •   AnT stands with Russia    15 年前

    因为您是在子类方法中进行的

    Animal::operator=(other);
    

    不需要 this-> . 作用域解析语法执行所请求的操作。我看不出用演员“间接”做这件事有什么意义。

    还要注意,在一般情况下,使用强制转换可能不会产生预期的结果,因为它不会禁用 事实上的 方法调用。(而且,顺便说一句,赋值运算符可以声明为虚拟的)。这样做的一个明显后果是,使用虚拟方法,“强制转换”变量可能很容易导致无休止的递归。

        2
  •  6
  •   Arkaitz Jimenez    15 年前

    this->Animal::operator=(other); 是正确的方法,您完全限定了引用父实现的方法,您不需要为此进行强制转换,这会使代码更难阅读。