原创 關於malloc函數的用法

一,函數聲明 malloc 向系統申請分配指定size個字節的內存空間。 返回類型是 void* 類型。void* 表示未確定類型的指針。 C,C++規定,void* 類型可以通過類型轉換強制轉換爲任何其它類型的指針 如果分配成功則返回指

原创 關於This指針的理解和應用

1. this指針的用處:   一個對象的this指針並不是對象本身的一部分,不會影響sizeof(對象)的結果。this作用域是在類內部,當在類的非靜態成員函數中訪問類的非靜態成員的時候,編譯器會自動將對象本身的地址作爲一個隱含

原创 C++實現雙鏈表

C++簡單實現順序表和單鏈表 雙鏈表 #include<iostream> #include<assert.h> using namespace std; typedef int DataType; struct ListNode

原创 多態&多態對象模型

1:什麼是多態? 多態就是多種形態。 滿足構成多態的條件:必須有虛函數的重寫(函數名,參數,返回值均相同,協變除外) 父類的指針或引用調用虛函數 多態跟類型無關而

原创 C/C++動態內存管理

1:總結並剖析malloc/free和new/delete之間關係和差異。 2:剖析new/delete、new[]/delete[]到底做了些什麼事情。 3:實現NEW_ARRAY/DELETE_ARRAY宏,模擬new[]/de

原创 String--引用計數寫時拷貝

寫時拷貝 class String { public: String(char* str = "") { _str = new char[strlen(str) + 1]; _refCo

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

//test.h 聲明一個函數func() void func(); //test.cpp 實現func函數 #include"test.h" void func() { } //main.cpp 調用func函數 in

原创 智能指針

一.智能指針 1.定義 所謂智能指針就是智能/自動化的管理指針所指向的動態資源的釋放 2.智能指針發展歷史 3.auto_ptr/scoped_ptr/shared_pr/weak_ptr的設計思想、缺陷

原创 菱形繼承

繼承 繼承是用來實現複用,是類型之間的關係建模。 繼承關係有public(公有繼承),protected(保護繼承),private(私有繼承) class A { public: void f1() {

原创 Linux中關於task_struct結構體的解析

爲了管理進程,操作系統必須對每個進程所做的事情進行清楚地描述,爲此,操作系統使用數據結構來代表處理不同的實體,這個數據結構就是通常所說的進程描述符或進程控制塊。 在linux系統中,這就是task_struct結構,在include\l

原创 討論構造拷貝構造的N中調用情況的問題

C++對傳參合傳返回值時構造的優化處理 C++形式參數類型和返回值類型如果是引用,那麼在傳遞時,會把實參或者返回值的引用自動 賦值給形式參數(返回值)。 C++返回值賦值和返回值的使用往往會進行編譯器的優化,例如:下面的調用中,只會調用

原创 C++類和對象:四個默認函數和運算符重載

一.類 1.類的定義 類是創建對象的模板,一個類可以創建多個對象,每個對象都是類類型的一個變量;創建對象的過程也叫類的實例化。每個對象都是類的一個具體實例(Instance) ,擁有類的成員變量和成員函數。 class Person

原创 鏈表—複雜鏈表的複製

複雜鏈表的複製。一個鏈表的每個節點,有一個指向next指針指向下一個節點,還有一個random指針指向這個鏈表中的一個隨機節點或者NULL,現在要求實現複製這個鏈表,返回複製後的新鏈表。 //ps: 複雜鏈表的結構 struct Co

原创 比較順序表和鏈表的優缺點

線性表分爲順序表和鏈表,鏈表又分爲單鏈表,雙向鏈表和循環鏈表。對於鏈表的結構又分爲帶頭鏈表和不帶頭鏈表。 一,順序表 定義:將表中元素一個接一個的存入一組連續的存儲單元中,這種存儲結構是順序結構。採用順序存儲結構的線性表

原创 單鏈表基礎題總結分析

1.從尾到頭打印單鏈表 2.在無頭單鏈表的一個節點前插入一個節點 3.單鏈表實現約瑟夫環 4.逆置/反轉單鏈表 5.單鏈表排序(冒泡排序&快速