工作需要,要學習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;