學習筆記1 C 總結

2021-10-24 09:11:56 字數 3338 閱讀 1800

溫故而知新,總結過去,展望未來!

一、函式過載

c++中允許通過換名機制實現函式過載,函式過載是指在相同的作用域中,允許存在多個函式名相同的函式(存在條件:他們的引數個數、引數型別、引數排列必須不同,返回值型別不做要求)。

二、異常處理

所謂異常,就是程式執行到某乙個函式或者方法內部時候,出現了與程式涉及流程不一致的情況,即出錯。此時,為了防止程式繼續執行下去而導致程式崩潰或者出錯,需要對異常進行處理,怎麼處理呢?傳送乙個訊號給呼叫上一級函式,上一級函式收到訊號後,進行相應的處理。

使用教程

1、傳送訊號:

丟擲異常

throw 異常值;

2、監聽訊號

捕獲異常:

trycatch(異常值型別1 變數名)

catch(異常值型別2 變數名)

...

幾點注意事項:

1、丟擲異常後,如果沒有匹配成功,就會繼續將該異常值往上一級丟擲,知道被處理(捕獲),或者被作業系統終止(程式崩潰)

2、try和catch不能單獨使用

3、throw相當於return,異常值丟擲後,該函式也就停止執行了。

4、呼叫該函式的上一級函式收到throw過來的異常訊號後,將會進行嚴格的資料型別匹配,不會進行型別轉換!

5、throw的關鍵字用來丟擲異常,異常值可以任意的型別(基本型別、自定義型別)

三、c++中的型別轉換

1、傳統的型別轉換:

型別 變數 = (型別)表示式;

型別 變數 = 型別(表示式);

2、新風格型別轉換:

(1)、靜態轉換:

static_cast《目標型別》(待轉換的值);

用於基本型別之間的轉換,如 int 與char,int 與 double,int與enum...

用於void*與其他任意型別的指標之間的轉換

與傳統的強轉相比,static_cast意圖更加明顯,帶有型別檢查

(2)、重解釋轉換

reinterpret_cast《目標型別》(待轉換的值);

用於任意型別的指標之間的轉換,及指標與整數之間的轉換。

reinterpret_cast 不修改底層的資料,只是以不同的方式去解釋底層的資料

(3)去除常量轉換

const_cast《目標型別》(帶轉換的值);

用於移除指標或者引用 的cv修飾符(const & volatile)

四、字串型別

c++標準庫中提供了乙個自定義型別名為string,專門用來描述字串的

標頭檔案 #include

iostream包含了string

使用方法:

定義:

string str;//定義了乙個空的字串

string str("hello");//定義並初始化字串str

string str;//定義並初始化字串str

string str = "hello world!";

數**算:

+ +=

關係運算:

== != > >= < <=

逐個字元地比較ascii碼值

常用介面函式:

size()/length() 返回字串的長度,實際字元的個數,不包含'\0'

at() 返回字串中指定位置的那個字元,如果指定位置超過字串的長度,就會丟擲異常

c_str() 將c++中的字串轉換成c語言中的字串(const char *)

empty() 判斷字串是否為空,返回值是乙個bool型別

find() 查詢指定的 字元/字串,返回該 字元/字串 首次出現的位置

substr() 裁剪字串

swap() 交換兩個字串的內容

clear() 清空字串

五、bool型別

是c++的基本型別之一,用來表示邏輯概念,只有兩種值:真(true)和假(false),非零即為真。bool型別只佔乙個位元組。主要用於:(1)條件判斷 (2)做為函式的返回值

六、引用 reference

應用就是別名,就是給已經存在了的變數起的另外乙個名字(綽號、小名),主要用於 函式傳參、函式返回值

格式:

型別 &引用別名 = 已經存在的變數(物件)名;

引用與指標的區別:

指標可以指為空(null),但是引用不能為空。

指標定義完了以後,可以修改指向,引用不能修改指向。

指標的加減是改變指向,但是引用的加減是改變引用物件的值。

引用不佔記憶體空間, 不需要分配記憶體空間,但是指標需要分配空間。

指標的大小是固定的為4個位元組(用來儲存位址)(對於32位機),可以提高效率。

引用的優點:

不用重新開闢空間(不需要重新建立物件)

如果引數比較大的時候,建議使用引用作為函式的引數,可以提高效率。

常引用:為了防止值被修改

const int &引用別名 = 已經存在的變數(物件)名;

注: 給已經存在的變數起乙個別名,此時"&"稱為引用宣告符

引用在宣告 的同時,必須初始化,不能有空引用(null)。

引用一旦宣告完成,就不能再更改引用物件了。

函式返回引用時,不能返回區域性變數的引用

七、物件

在物件導向的程式設計中,所有東西(看得見、看不見的)都是物件。每個物件都有自己的屬性和行為

八、自定義型別 class

什麼是型別?

型別就是一種抽象概念(思想、觀點),是同型別物件的抽象,它包含該類所有物件都應該具有屬性和行為

有類 型別這麼乙個模板之後,我們就可以建立物件了,用型別來建立物件的這個過程,我們稱之為例項化乙個物件

如果我們在基礎類中找不到我們想要的模型(概念),我們可以自定義乙個類來表示

定義: class 自定義型別名

; 類成員:

一般用資料來表示屬性,用函式來表示行為(功能)

用來描述屬性的變數,稱之為 成員變數

用來實現行為(功能)的函式,稱之為,成員函式。

在類外定義成員函式

返回值型別 類名 :: 函式名(引數列表)

訪問修飾符:

public:公共的

在整個程式內部都可以被訪問,通常用來定義介面函式。

private:私有的

隱藏起來的,不能直接訪問,只可以通過類的成員函式或者友元函式來訪問。

protected:受保護的

隱藏起來的,不不能直接訪問,可以被類的成員或者友元函式 或者 子類 訪問

注: 在定義類時,如果沒有加訪問修飾符

1 C 學習筆記 記憶體模型

c 和c語言對於變數定義的方式型別,定義的不同方式確定了變數的生存週期 作用範圍以及可以被誰使用的 許可權 問題。一般來講我們把儲存的持續性簡稱為變數在程式中定義的位置,有以下三個位置 1.自動儲存持續性 簡稱自動變數,該變數定義在具體的函式塊中,並且不加 static 這種修飾符,該類變數從函式被...

Unity學習筆記(1) C 的相關筆記

主要分為兩種型別 1 值型別 直接儲存在記憶體的棧上面 2 引用型別 在記憶體的棧上面衍生出乙個引用,在記憶體的堆上面才會儲存具體的值 3 指標型別 僅在不安全專案中使用 值型別 1 內建型別,如int bool等 2 使用者可自定義的struct型別及列舉enum型別 所有的值型別均繼承於syst...

學習筆記1 c 實現LRU演算法

leetcode oj上有一道題目,要程式設計實現cache的lru演算法,剛看到這道題的時候,我想到了用佇列來做,但是若用單鏈表來做,必須要儲存尾節點的上乙個節點指標,才能實現快速增加一條資料,程式設計起來很不方便,所以我採用了雙端佇列實現,為了處理方便,儲存兩個帶節點指標,乙個節點的next指向...