原创 模板爲什麼不能分離編譯

爲了實現泛型編程(即與類型無關的代碼)在c++中引入了模板這一概念,在寫一個項目的時侯我們通常將一個項目分爲.h文件(寫函數的聲明),.cpp文件(函數的定義實現),.cpp(測試文件)。通常情況下普通函數這樣是沒問題的,但是模板

原创 數組指針,指針數組和函數指針

數組指針:首先呢他是一個指針,他有能力指向一個數組。 指針:其數值爲地址的變量。 int (*p)[3]; // p首先與*結合,所以他呢是一個指針,他可以指向一個數組,這個數組有三個元素,每個元素爲整形。 指針數組:首先呢他是

原创 多態&多態對象模型

(動態)多態:當使用基類的指針或引用調用重寫的虛函數,當指向父類調用的就是父類的虛函數,指向子類調用的就是子類的虛函數。 不難剖析出要實現多態: 首先要有虛函數的重寫,其次要用基類的指針去調用。 那麼先簡單認識下虛函數&虛函數

原创 繼承

繼承作爲面向對象的三大特性之一,是面向對象複用的重要手段,通過繼承定義一個類,繼承是類型之間的關係建模,共享共有的東西,實現各自本質不同的東西。 繼承是一種複用手段,在繼承關係裏,基類繼承派生類的成員,以此來達到複用的效果。 先看

原创 list的簡單剖析

前面介紹了庫中的vector,下面來認識下list。主要與vector作比較。 list:帶頭的雙向循環鏈表。 相較於vector的連續線性空間,list的優勢在於每次插入或刪除一個元素,就配置或釋放一個元素空間。因此,list

原创 c++函數重載的實現原理

函數重載作爲c++的主要特性之一,有着廣泛的用途。在此便簡單剖析一下函數重載的實現原理。 要考慮這個問題,應從底層去探索。 生成一個可執行的程序,主要經過編譯和鏈接的過程,在C語言中是不支持函數重載的實現的,可以通過比較兩者具體

原创 sizeof 的使用

sizeof() :關鍵字,並非函數,其作用爲返回一個對象或者類型所佔的內存字節數。 下面內容主要介紹sizeof()在一緯數組中的用法。 備註:*除sizeof(單個數組名)以及“”&數組名“”中數組名錶示整個數組,其餘所有

原创 string類深拷貝,寫時拷貝

在實現string類時不能用簡單的淺拷貝去實現,因爲淺拷貝會簡單讓兩個對象指向同一塊空間,這樣的缺陷是兩者指向同一塊空間,析構時會出現程序崩潰的問題,兩個對象管理同一塊空間,一改都改,這顯然是你所不期待的。 所以深拷貝就應運而

原创 智能指針

在c++中,動態內存的的開闢與釋放有人爲的去管理的話,有時會出現問題(忘記釋放,執行流的跳轉…)從而導致內存的泄漏問題。爲了解決這一問題引入了智能指針,即開闢與釋放是自動完成的。 RAII 智能指針實現的基礎,即通過一個類來管

原创 入坑小白

剛接觸這樣一個新事物,期待自己能儘快入手,可以創造出自己喜歡的東西。 最好在畢業時進入這個行業工作,把自己的興趣轉化爲工作,實現自己的價值。 在一開始的學習生活中能付出較多的時間和精力,保證周內每天有兩小時編程,一小時讀書。週末每天有

原创 c++類的默認構造函數(前三個:構造,拷貝構造,析構)

在介紹c++的默認構造函數之前呢,先簡單的說下this指針。 · this指針 1.每個成員函數都有一個指針形參,它的名字是固定的成爲this指針,this指針是隱式的(構造函數比較特殊,它不含this指針)。 2.編譯器會

原创 strlen的使用

sterlen: 作用求取字符串長度,從內存某個位置開始掃描,直到‘\0’停止,不包含‘\0’. char arr[] = “abcdef”; printf("%d\n", strlen(arr));// 6 arr代表首

原创 類型萃取

初次接觸類型萃取是在運用模板實現seqlist的時候,拷貝構造和賦值運算符重載時,單純的使用memcopy(),函數進行拷貝,只是單純的進行了淺拷貝,對於基本的數據類型是不會有任何錯誤的,但是如果是string類型時,單純的值拷貝

原创 vector的簡單剖析

vector(向量):順序表,c++的一種線性數據結構,是一個類,包含於頭文件vector.h中,更加簡單的說,它就是一個動態的數組。 下面簡單認識下stl中所提供的關於vector的常用接口: 修改類: push_back:

原创 可變參數列表

可變參數列表的使用是很有必要的一件事情,在實現某個功能時,你可能不知道傳幾個參數。下面簡單介紹一下可變參數列表的使用。 可變參數列表是通過宏來實現的,定義與stdarg.h頭文件中。 void va_start(va_list a