C++在抽象类的函数定义中

Arn*_*her 5 c++ abstract-class interface abstract

我想知道是否可以在函数中执行侦听器/抽象类的Java样式实现.

在Java中,如果我有一个如下界面:

public interface ExampleListener {
    public void callExampleListenerMethod();
}
Run Code Online (Sandbox Code Playgroud)

我知道可以在一个方法中实现这个接口,以便快速使用这样的东西:

someRandomJavaFunction{
   //do some stuff
   ExampleListener object = new ExampleListener() {
        @Override
        public void callExampleListenerMethod() {
            //do other stuff
        }
   });
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个像这样定义的抽象类,现在可以在C++中以某种方式完成第二部分

class ExampleListener {

  public:
     virtual ~ExampleListener(); //virtual destructor is apparently important

     virtual void callExampleListenerMethod() = 0; //method to implement

};
Run Code Online (Sandbox Code Playgroud)

当然我可以简单地将它用作Base类,我不得不实现该方法.但是有可能对java进行类似的"动态"实现吗?

Arm*_*yan 9

不,在C++中没有相当于"on-the-fly"方法的实现.你在C++中最接近的是本地类

void f()
{ 
    class MyLocalClass: public Listener
    {
        virtual void MyMethodOverride()
        {
             //... 
        }
    }

    Listener* pListener = new MyLocalClass;
    //...
}
Run Code Online (Sandbox Code Playgroud)