在java中,经常存在的对象只能用于包装某个功能,并且没有任何状态。例如:创建空对象
class Foo {
void foo() {
System.out.println("foo");
}
static public void main(String[] arg) {
Foo foo = new Foo();
foo.foo();
}
}
我想知道如果表达式new Foo()
被优化以什么在C++中。将函数指针的分配。这似乎是一件显而易见的事情,但是当我考虑它时,编译器将不得不检查foo
是否不用于同步(可能还有别的吗?)。标准是否对此有所说明?
你在说什么编译器?从源代码编译为字节码,还是字节码JIT编译? – ControlAltDel 2012-07-05 13:46:06
javac 1.7,源代码字节码 – 2012-07-05 13:55:32
这是[specification](http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.9.4)必须说:“接下来,空间分配给新的类实例。” – 2012-07-05 14:02:09