考虑以下Java程序:如何创建我的抽象类的无名派生类的对象?
abstract class Surprising
{
void fun()
{
System.out.println("fun() is invoked");
}
}
class myclass
{
public static void main(String args[])
{
Surprising s=new Surprising() { };
s.fun();
}
}
在这里,我创建我的抽象类的子类的无名对象奇怪,抽象类的不是对象,因为它是不允许在Java创建抽象类的对象。
什么是等效的C++程序?是否有可能在C++中做到这一点?如果是,&如果不是,为什么不允许?
这与问题中的例子有很大的不同。现在每个匿名者都必须实现'fun'方法。我会建议添加一个虚拟的方法,所以'惊讶'类仍然实现'fun' – Timo
没有必要这样做,我只是这样做,因为我有这样的感觉,OP有一个特定的原因使'惊讶'抽象,即防止实例化。人们可以在'Surprising'中定义'fun()'函数,然后从中派生出一个类,但是如果派生类不添加或改变功能,那么子类是什么? –
''最好让匿名类使用'override'关键字而不是'virtual'。 ' '干杯 –