2019.11.17記,從今天起進行c++和資料結構的學習,為期兩周
博主看的是中國大學mooc上北大的c++入門課,蠻推薦的,同樣還有翁愷的c++。
廢話不多說,咱們開始
一、有c到c++
c與c++最大的區別就是面向過程和物件導向,關於物件導向的具體資訊後面會降到
二、與c不同的基礎知識
(一)、引用:
int i;
int & n = i;
i = 1;
std::cout << n; // 會輸出1
注意以下幾點:
1、引用後n變數的型別就是int&
2、引用後兩個變數的位址是相同的(博主親測過)
3、應用變數要在定義時初始化
4、引用可以當做函式的返回值int & function(void);
(二)、const關鍵字
這個和c一樣,有幾個點要注意下:
1、常引用:const int & ***
不能使用常引用去修改變數。
2、常指標:const int * *****
不能通過常指標去修改所指的變數
(三)、動態記憶體分配
分配乙個變數記憶體
int * p;
p = new int;
delete p;
分配乙個陣列記憶體
int * p;
p = new int[50];
delete p;
動態記憶體分配,在c中有malloc,free運算子。
c++中就是new分配記憶體。
只能給指標分配記憶體,new完返回的是這個記憶體的位址。
注:分配完記憶體後,一定要用delete清空記憶體。
(四)、內聯函式
因為c++很強調效率,因為當有些函式要多次呼叫時,會很耗時間。
在定義函式時,將函式定義為內聯函式可大大降低消耗時間。
inline int function(void)
(五)、函式過載
因為變數名字不好取,為了讓取名變得簡單,所以有函式過載,函式根據變數的型別和個數選擇函式執行
int function(int a,int b)
int function(double a,double b);
int function(int a,int b,int c)
function(1,2);
function(1.1,1.2);
function(1,2,3);
輸出結果
function1
function2
function3
注:使用函式時變數一定要符合引數列表規定
(六)、預設函式
目的:為了提高開發過程的拓展性
void function(int a,int b, int c = 1);
function(1, 2) // 可
function(1,2,3) // 可
function(1, ,3) // 不可,c++預設只能缺最右邊的變數
如何提高拓展性:比如開發乙個程式,這個函式的要新增乙個變數,總不能改變所有引用函式,使用預設函式,不需要這個功能的直接使用原先的預設值,需要的修改定義就好。 C 學習筆記 基礎知識部分(一)
包含兩類檔案,分別是.cpp檔案 實現檔案 和.件 標頭檔案 一 標頭檔案 為了防止同一標頭檔案在乙個專案中被重複包含,有兩種方式 可以同時使用 1 define head h 定義巨集符號 ifdef head h 判斷巨集符號是否已被定義,如果已經定義直接跳到 endif後面 內容 endif ...
C 基礎知識學習筆記(二)
繼承 軟體復用 1.例項化乙個派生類物件時,先呼叫基類的建構函式。若基類的建構函式沒有引數或者沒有顯式定義基類的建構函式,定義派生類建構函式時不必顯式初始化基類成員,甚至無需定義建構函式,編譯器會自動呼叫派生類的預設建構函式,派生類的預設建構函式去呼叫基類的預設建構函式。派生類不能繼承基類的建構函式...
C 學習筆記 二 基礎知識
1.逗號操作符 逗號表示式是一組由逗號分割的表示式,這些表示式從左向右計算。逗號表示式的結果是其最右邊表示式的值。如果最右邊的運算元 是左值,則逗號表示式的值也是左值。此類表示式通常用於for迴圈 int cnt ivec.size for vector size type ix 0 ix ivec...