題目是這樣的:
問:不使用任何循環語句,遞歸,輸出打印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");
}