可能的重复:
一个类怎么会有自己类型的成员,这不是无限递归吗?
代码:
public class Test2{
private Test2 subject = new Test2(); //Create Test2 object in Test2
private int num;
}
问题:
为什么Java允许执行上述代码,而C++不允许执行?
上面的代码是否创建了无限数量的对象?自从Test2
本身包含一个Test2
对象又包含一个Test2
本身有一个对象Test2
对象等。
关于您的问题,两种语言之间的主要区别在于,Java 是一种具有引用语义的语言(基本类型除外),而 C++ 是一种具有值语义的语言,允许通过引用和指针实现引用语义。
看起来的语法similar在两种语言中具有完全不同的含义,当在 Java 中创建一个参考 (Test2 x = new Test2();
) C++ 中的等效构造将使用指针 (Test2 *x = new Test2();
).
一个关键的区别在于,通过使用指针在值语义之上提供引用语义很简单,但不可能在(纯)引用语义之上提供值语义。该语句的一些含义包括无法控制 Java 中对象在内存中的布局或数据的位置(对于除基本类型和基本类型数组之外的任何内容),而在另一个方向上可以更好地控制对象C++ 允许你模仿 Java 对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)