【问题标题】:C++ equivalent to Java's `super.func();`?C++ 等价于 Java 的 `super.func();`?
【发布时间】:2012-10-06 09:48:01
【问题描述】:

我在某个 Java 项目中工作了很长时间,调用父级的虚函数是这样的:

int func(..) {
    super.func(..);
}

但是现在当我回到 C++ 时,这就是我认为它会像这样工作的方式(对于 Constructors 这个工作),但我错了。我什至忘记了这是怎么称呼的。 ((Component)this)->func(); 也不起作用,所以我迷路了。

int Label::func() : Component::func() {
}

如何正确完成?

提前致谢!

【问题讨论】:

  • 您尝试使用的语法是初始化列表(函数声明后的: ... 语法)。它只适用于构造函数,用于初始化对象的成员变量。

标签: java c++ virtual-functions


【解决方案1】:

你应该从超类显式调用函数:

int Label::func() 
{
    return Component::func();
}

【讨论】:

    【解决方案2】:

    我以前见过这个(尽管在 C++ 中人们经常说 Base 而不是 Super):

    class Label : Component
    {
       typedef Component Super;
    
       int func()
       {
         Super::func();
       }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 2013-05-26
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      相关资源
      最近更新 更多