看了那个贴子,也来谈谈C++和java的语言陷阱
http://expert.csdn.net/Expert/topic/3013/3013478.xml?temp=.9383509
默认参数这一点我猜错了 运行后才想通
其实我觉得 java 的语法比起 C++ 来简单 是java的优点
这个贴子的题目其实是C++的缺点,是C++程序中应该避免的
甚至我觉得 java 的语法都应该更简单一点 里面也有很多陷阱
《effective java》里面就有很多 java语言规范简直就是java 语法陷阱大全
随便举几个例子:
1、 子类会覆盖父类的同名变量,如果子类可以访问这些变量的话;导致的结果是:尽量把所有的变量声明为private,而通过 get/set 方法让子类访问;否则用户继承一个类,然后不小心覆盖了变量,就会产生一些隐蔽的bug
2、 包级访问权限(就是缺省访问权限)的方法,子类不能访问却能改写(C++中也有类似的问题)。导致的结果是:所有的包级访问权限方法都应该声明为 final ,虽然明知别人无法访问
3、 函数参数的自动类型转换与提升也很容易出错。
比如,类A有两个同名函数 void f( Object ) 和 void f( String )
猜猜看,A.f( null ) 会调用那一个?