[置顶] c++ c# java 区别小汇

托管与非托管代码

托管代码 ,managed  code,是由公共语言运行环境(而不是直接由操作系统)执行的代码。公共语言运行库会提供例如垃圾自动回收、运行库类型检查和安全支持等。
非托管代码,直接由操作系统运行。
java、c#都是托管代码;c++不是。再如,COM 组件、ActiveX 接口和 Win32 API 函数都是非托管代码。
微笑 为什么托管代码在企业中用的多?
托管代码由虚拟机执行,它可以帮程序员做许多事情,如数组越界检查、内存回收。人是容易犯错的动物,所以写cpp代码易犯一些隐蔽的错误,如前面讲的数组越界、内存泄露,且这些错误排查起来很困难。因此为了追求开发效率,损失一些执行效率也可以接受。

main 函数
c++。全局函数。
c#。Main首字母大写,必须是一个类的成员函数。

数组
c++. int arr[size].
c#.   int [] arr=new int[size].
java同c#。

类定义
C++。结尾有分号。
c#。结尾无分号。

this关键字
c++。this->成员。
c#。this.成员。

bool
c#。整数与bool不能相互转换。
java。用的是boolean关键字。整数与boolean不能相互转换。

注释
c#。支持 #region 和 ///<summary>注释。
java。支持/**   */的注释,用于IDE提示、生成JavaDoc。

反射
c++。只有它不支持。

泛型
c++。泛型,也就是template随便用。参见 http://blog.csdn.net/chuchus/article/details/39696117 。
java。泛型是靠擦除机制实现的。所以

语法糖
java。

const 与 final
c++。const 修饰的对象不可更改。
java。final仅约束变量的引用不变,而非所引用对象的内容不变。因此,java没有c++中“常函数”的机制。

多态
c++。拥有virtual关键字是多态的必要条件。
java。多态是主动的行为。@Override 声明可要可不要。

友元
c++。只有它有。

迭代器
c++。iterator是内部类,即vector、deque等分别拥有自己的iterator。
java。iterator是Iterable接口中的函数。容器类都实现了这个接口。

异常
cpp。没有finally关键字。它表示无论try{}中是否有异常抛出,最终都会执行的动作。

运算符重载
c++。可以重载为友元,也可以重载为成员函数。
java。太弱了,只能重载“+”号。

形参默认值
c++。支持。
java。不支持。

你可能感兴趣的:([置顶] c++ c# java 区别小汇)