歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++ 與Java差異總結

C++ 與Java差異總結

日期:2017/3/1 9:10:36   编辑:Linux編程

工作需要,要學習Qt,之前學過Java,我想C++和Java對比著來學習應該可以很快上手。

C++的核心概念:編譯單元,頭文件,目標文件,庫

Qt:信號和槽機制,foreach

Qt中沒有用到的c++概念:模板類,模板函數的定義 共用體類型,異常 這三個就放在以後再學

差異:

1. C++不會在運行時檢驗數組是否越界,沒有垃圾回收機制

2.C++沒有為所有的類提供一個可以從中繼承出來的一般類object。

3.Qt則為所有的類型提供了一個簡單的基類

4.Java中的“接口”的概念,只能用C++的純虛函數來表示

5.C++不允許在類定義中初始化成員變量

6.C++中沒有能夠只想基類的super關鍵字,如需調用,可以在這個函數的名字前加一個由基類的名字和“::”操作符構成的前綴

7.C++支持多重繼承,一個類可以同時從多個類中派生出來

語法形式: class DevicesClass: public BaseClass1,public BaseClass2,...,

                 publicClassN

        {

        ...

        };

8.C++支持局部對象和全局對象。因為這一支持,C++也提供了自動構造和析構。這導致了對構造函數和析構函數的調用,(對於堆對象)就是內存的分配和釋放

9.在C++中,指針就是一個可以存儲對象的內存地址的變量。在概念上與Java和C#中的引用非常相似,只不過還可以使用指針遍歷整個內存

10.C++也支持“引用”的概念,引用存儲的也是一個對象的地址值

“引用”和“指針”的不同點:

           1> 聲明用的是“&”而不是“*”

            2> 引用必須是初始化過的,且不能再賦值

            3> 可直接訪問與引用相關聯的對象,無“*”或“->”這樣的特殊語法

            4> 引用不能為空

11.C++數組大小必須是一個常數值

如果想要創建可變大小的數組:

            1> int *fibonacci = new int[];

            2>std::vector<int>fibonacci(n);//使用標准std::Vector<T>類

            3>QVector<int>fibonacci(n) //使用Qt的QVector類

12.C++中引用了4種具有准確語義的新強制轉換類型

            1>static_cast<T>()

            2>dynamic_cast<T>()

            3>const_cast<T>()

            4>reinterpret_cast<T>()

13.C++允許重載函數,另外還支持運算符重載

14.C++中所有的類型都可以用作“引用類型”,並且那些具有復制性的類型也還可以用作“值類型”

int *i = new int(5);

int *j = new int (10);

*i = *j;

Copyright © Linux教程網 All Rights Reserved