2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

C/C++面向對象和java面向對象的區別

更新時間:2017-12-29 來源:黑馬程序員 瀏覽量:

引用:

java和c++都有引用的概念,但兩者是完全不同的東西,c++的引用是變量的一個別名,引用一旦綁定就不能重新引用其他變量,c++引用也不能為null。java引用更像c++的指針,對引用賦值是重新綁定引用的對象(在c++里面是改變對象的值),引用可以為null(導致了煩人的NPE問題,萬惡之源)

類型系統:

java區分值類型與引用類型,用戶自定義類型都是引用類型,值類型和引用類型在很多地方不能混用(如泛型參數),c++沒有值類型和引用類型的概念,類似的概念是普通類和它的指針類型。

java有根基類Object,c++沒有根基類。

訪問控制:

都有public,protected,private三級訪問控制

此外,java還有包訪問控制,c++有友元

繼承:

c++分public繼承,protected繼承(意義不明)和private繼承(基本和組合沒啥區別),java只有public繼承。

c++只能覆蓋基類中顯式定義的虛函數,java中方法默認是虛的,除非顯式標明final

c++支持多重繼承,java只支持單繼承,但支持實現多個接口(c++沒有語法層面上的接口)

構造與析構:

對象構造大致相同,但是c++在構造函數中調用虛函數無法多態(因為對象的子類部分還沒構造)

c++可以定義析構函數,java沒有析構函數(java提供一個終結方法,但它和析構函數不是等價的)

對象生命周期控制:

c++主要靠手動申請,釋放內存或者借助析構函數(RAII技術),java依靠gc

異常處理:

c++沒有也不需要finally塊,釋放資源依靠析構函數就行了。

泛型:

c++模板采用代碼生成技術,運行時能夠保留類型信息,java采用類型擦除,類型信息在運行時就沒了(所以其實只是進行安全的自動類型轉換而已……)。c++模板參數可以是基本類型,用戶自定義類型和整型常量,java只能是引用類型。c++還可以對模板進行特化,java沒有這個功能。

其他:

c++有運算符重載,java沒有(除了String類重載了+)


本文版權歸黑馬程序員C/C++學院所有,歡迎轉載,轉載請注明作者出處。謝謝!


作者:黑馬程序員C/C++培訓學院


首發:http://c.itheima.com/


分享到:
在線咨詢 我要報名
和我們在線交談!