在Java中,通常编写以下内容(例如用于事件处理)以利用模板方法模式:

abstract class SomeAbstractClass {
    public abstract void SomeFunction ();
}

//...

SomeAbstractClass obj = new SomeAbstractClass () {
    public void SomeFunction () { /* implementation */ }
};

在C++中,将编译以下内容:
class SomeAbstractClass {
    virtual void SomeFunction () = 0;
};

// ...

SomeAbstractClass * obj = new ( class : public SomeAbstractClass {
    virtual void SomeFunction () { /* implementation */ }
});

人们为什么通常不这样做?

最佳答案

我认为匿名类会出现三个问题

  • 您不能编写构造函数,因为类没有名称。
  • 初始值设定项列表继承是不允许的。
  • 捕获值也很困难,最终变量只能访问。
  • 10-05 19:21