转载

Java转C++时需注意的区别

因为即会C++又懂点Java的缘故,就朋友的邀请,共同合作一个项目——“把一个Java工程的项目转成C++”。这个项目前前后后历时约两周,采了不少坑……现把Java和C++的主要区别总结一个,从中吸取教训。

#1.定义变量和数组时,Java默认初始化,C++不初始化;

1.类中,方法中定义变量、动态数组时,Java默认初始化,C++不初始化;

如下Java代码

public class Test {     public void testValue() {         int arr[] = new int[4];         System.out.println("int value:  " + iValue);         System.out.println("float value:" + fValue);         for (int i = 0; i < arr.length; i++) {             System.out.print(arr[i] + "/t");         }     }      private int iValue;     private int fValue; }

结果如下:

int value: 0

float value:0

0 0 0 0

如下C++代码:

结果如下:

int Value: -858993460

float Value: -858993460

-858993460 -858993460 -858993460 -858993460

因为变量未进行初始化,结果是一个任意的值,这将是非常危险的。

#2.Java中有垃圾回收机制,C++没有。Java中new对象后不用管,不用考虑释放;C++中new了对象可分配内存后一定要记得释放,不然就会内存泄漏;要使C++创建对象自行释放,要自己实现一套引用计数的机制。

#3.Java中只有引用,没有指针;C++中有引用,也有指针。

Java可读性好,更安全;C++更难懂,但更灵活(特别是算法的一些操作时)。

#4.在定义类的成员时,Java可以赋初值,C++不可以

#5.函数的参数,C++可以有默认形参,Java不可以

#6.Java中用final修饰不改变的成员,C++用const修饰不可改变的变量

原文  http://sunlogging.com/2016/07/03/java转c时需注意的区别/
正文到此结束
Loading...