1.类型安全
C++不是类型安全的,Java是类型安全的
类型安全,很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。程序的类型安全的定义是从不显式或隐式的把一种类型转换成另一种类型。
C++相对于C更安全,体现在:
(1)操作符new返回的指针类型严格与对象匹配,而不是void*;
(2)C中很多以void*为参数的函数可以改写为C++模板函数,而模板是支持类型检查的;
(3)引入const关键字代替#define constants,它是有类型、有作用域的,而#define constants只是简单的文本替换;
(4)一些#define宏可被改写为inline函数,结合函数的重载,可在类型安全的前提下支持多种类型,当然改写为模板也能保证类型安全;
(5)C++提供了dynamic_cast关键字,使得转换过程更加安全,因为dynamic_cast比static_cast涉及更多具体的类型检查。
尽管如此,C++仍然不是类型安全的语言。比如,C++的int类型可以转换为bool类型,两个不同类型的指针可以被强制转换等。
Java是类型安全的