Java和C ++中类和对象的实现差异

时间:2017-06-26 05:32:14

标签: java c++ oop

我在java中编写了以下代码:

class node{
  int key;
  node left ,right;
  public node(int item ){
  key = item;
  left = right = NULL;
 }

它在java中运行良好但是当我尝试在c ++中实现相同的东西时,它显示错误,“错误:字段'左'具有不完整类型'节点'”。 任何人都可以解释这是怎么回事?以及如何删除此错误?我想知道这两种语言是如何实现的。

1 个答案:

答案 0 :(得分:6)

在Java中,当您声明某个对象类型的变量时,您实际上只将其声明为该对象的引用。在C ++中,一个对象声明为

node left;

表示leftnode类的实际实例。并且为了能够定义一个实例,需要完整的类定义。

在类中,当声明成员变量和函数时,该类实际上尚未完全定义,直到结束}才会发生。

要将变量声明为引用,您需要使用&字符,例如

node& left;

或使用指针,如

node* left;

当需要链接到对象时,指针是最常见的,因为引用的语义是这样的,一旦初始化引用就不能更改为引用另一个对象。

所有这些,以及更多,应该是in any good beginners C++ book,我建议你找到并阅读一个。