题目是这样的:
问:不使用任何循环语句,递归,输出打印n条(n>1) "Hello World"。
解这道题目,利用了c++语言一个非常重要的特性:
c++允许定义基于statck数据区的Object。由此,不由想到了Java.
在Java的世界里,所有的类型都是引用(或者称为指针), 对象内存的分配都是通过new从heap上显式的分配,无法在Java里构建基于statck数据区的对象。所以在Java里,这道题目是无解的。
Java之于c++,既是进步,又是倒退。
Java语言本身的确帮助c++程序员做了很多事情,比如GC, 去掉了c++中很多复杂的特性,比如多重继承,运算符重载等。
同时,c++本身的很多优点,也丧失了。 写了c++, 然后再写java,一个明显的感觉是,没法使用java写出像c++一样简洁的程序。
比如, 没有了运算符重载, 你不得不使用equal方法来表达两个对象的相等。
Java不能显式表达RAII概念,你不得不使用hard code的方法Log方法的进入和退出, 如:
func() {
log("enter func");
//do something.
log("exit func");
}