JAVA:
1.动态绑定是默认行为
2.单根继承(使垃圾回收机制容易处理)
3.垃圾回收器管理new的内存
4.变量作用域和生命周期(超出作用域,生命周期不一定结束)
{
int x = 9;
{
int x = 90; // Java会报错,但C++是没问题的
}
}
5.类未进行初始化时,数据成员有默认值,以确保基本类型的成员变量得到初始化。 如果有些变量未进行必要的初始化,编译器会报错。
6.用包(反转域名)避免和另一个模块相同名字
C++:
1.动态绑定需要用关键字virtual
2.支持多继承
3.程序员需要自己管理new相关的内存
4.作用域和生命周期可相互对应
5.类未进行初始化时,数据成员会有个不确定的值。如果有些变量未进行必要的初始化,编译器给予警告。
6.用namespace避免重名