答:C++和JAVA都是面向對象語言,基于面向對象的思想,可重用性高。
| JAVA | C++ |
| 解釋性語言所有代碼都會翻譯成統一的、與系統無關的bytecode,然后放到JVM上運行 | 編譯型語言代碼要先通過編譯器轉換成與系統相關的中間代碼,然后才能運行 |
| 定義一種公用靜態的變量完成定義全局變量的功能 | 可定義全局變量和全局函數 |
| (接口) | 支持多重繼承 |
| 自動回收(GC) | 程序員申請和釋放內存 |
| Java不支持系統調用,無法與操作系統進行交互。這也是為何Java中只有線程(Thread)概念而沒有進程(PRocess)概念。 | 可以調用系統中的指令,如dos命令 |
| 提供對注釋文檔的內建支持 | no |
| 有很多標準庫 | 一般廠家提供庫 |
| no | 支持運算符重載 |
| no | 支持預處理 |
| 必須顯示的強轉 | 自動強制類型轉換 |
| 沒有指針的概念 | 支持指針 |
| 不包含結構和聯合,所有內容都封裝在類里面 | 結構和聯合的所有成員均為公用,帶來了安全性問題 |
| 純面向對象語言,所有的代碼必須在類中實現 | 兼具面向對象和面向過程 |
可以看到,兩者之間既有相似之處,也有不同的地方。對于單繼承的實現本質上是一樣的,但也有細微的差別(如方法表);差別最大的是對于多重繼承(多重接口)的支持。實際上,由于 C++ 是靜態編譯型語言,在編譯時就可以確定要調用的方法在方法表的位置,沒有JVM搜索常量池的過程。它無法像 Java 那樣,在運行時刻動態的“查找”所要調用的方法。
對于普通的工廠模式當我們在添加一個子類的時候,就需要對應的修改工廠類。 當我們添加很多的子類的時候,會很麻煩。 * Java 工廠模式可以參考 * http://baike.xsoftlab.net/view/java-factory-pattern * * 現在我們利用反射機制實現工廠模式,可以在不修改工廠類的情況下添加任意多個子類。 * * 但是有一點仍然很麻煩,就是需要知道完整的包名和類名,這里可以使用properties配置文件來完成。 * * java 讀取 properties 配置文件 的方法可以參考 * http://baike.xsoftlab.net/view/java-read-the-properties-configuration-file4、方法:反射機制是如何獲得class類的?
1)class.forName("類的路徑")
2)類名.class
3)實例.getClass()
第一次握手:建立連接時,客戶端發送SYN包到服務器,進入SYN_SEND狀態,等待服務器確認。第二次握手:服務器收到SYN包,確認客戶的SYN(ack=j+1),自己也發送一個SYN包(syn=k),進入SYN_RECV狀態。第三次握手:客戶端收到ack+syn包,向服務器發送確認包(ack=k+1),發完之后,客戶端和服務器都進入establelished狀態,完成3次握手。
四次揮手:A:“我已無話可說(FIN=1),分手吧!” B:“你不愛我了(ACK=1)” B:“我還不稀罕你嘞!(FIN=1)” A:“拜拜就拜拜,下一個更乖。(ACK=1)”1 當主機A完成數據傳輸后,將控制位FIN置1,提出停止TCP連接的請求2 主機B收到FIN后對其作出響應,確認這一方向上的TCP連接將關閉,將ACK置13 由B 端再提出反方向的關閉請求,將FIN置14 主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束.新聞熱點
疑難解答