我想知道是否可以在一个函数中实现监听器/抽象类的Java样式实现。
在Java中,如果我具有如下接口(interface):
public interface ExampleListener {
public void callExampleListenerMethod();
}
我知道可以在方法中实现此接口(interface),以便快速使用,例如:
someRandomJavaFunction{
//do some stuff
ExampleListener object = new ExampleListener() {
@Override
public void callExampleListenerMethod() {
//do other stuff
}
});
}
如果我有一个像这样定义的抽象类,现在可以用C++进行第二部分了
class ExampleListener {
public:
virtual ~ExampleListener(); //virtual destructor is apparently important
virtual void callExampleListenerMethod() = 0; //method to implement
};
当然,我可以简单地将其用作基类,并且必须实现该方法。但是有可能做与Java类似的“运行中”实现吗?
最佳答案
不,在C++中没有等效的“即时”方法实现。您可以在C++中执行的最接近的操作是a local class
void f()
{
class MyLocalClass: public Listener
{
virtual void MyMethodOverride()
{
//...
}
}
Listener* pListener = new MyLocalClass;
//...
}
关于抽象类的函数定义中的C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23567165/