C++、Java和C#的特性比较(摘至 《Visual Studio .Net Framework Black Book》)
C++ |
Java |
C# |
具有不包含宏的预处理器 | 不具有任何预处理器 | 具有一个受限的预处理器 |
编译成本机代码 | 在程序执行时进行JIT编译,编译成字节代码 | 使用JIT编译方法,在首次使用或者安装时编译成中间代码 |
混合语言 | 完全OO语言 | 完全OO语言 |
支持多重继承 | 只支持单一继承 | 只支持单一继承 |
接口无语言支持 | 接口有语言支持 | 接口有语言支持 |
没有单一的基类 | 所有类都从单一的对象类重继承而来 | 所有类都从单一的对象类重继承而来 |
支持模板 | 不支持模板 | 不支持模板 |
操作符重载 | 无操作符重载 | 有限的操作符重载 |
可在bool和int类型之间转换 | 不能进行bool到int的转换 | 不能进行bool到int的转换 |
case标记使用整型类型 | case标记使用整型类型 | case标记使用整型类型,也可以使用字符串类型 |
支持枚举 | 不支持枚举 | 支持枚举 |
C风格的多维数组支持 | C风格的多维数组支持 | 严格支持多维数组 |
通过指针或者引用,直接访问对象 | 所有对象都通过引用来访问 | 值和引用类型允许有效地给某些类型值传递 |
支持指针和引用 | 仅支持引用 | 引用支持;指针允许用于“不安全”的代码块中 |
支持变量列表 | 不直接支持变量列表 | 不直接支持变量列表 |
不支持属性 | 通过代码约束支持属性 | 在第一类语言特性中指出属性 |
不支持事件 | 通过代码约束支持事件 | 在第一类语言特性中指出事件 |
不支持委派 | 不支持委派 | 支持委派(与类函数指针等价) |