c++從原始檔到可執行檔案的過程
這是另乙個細緻過程的blog
c++中的控制代碼(感覺用處不大)
全域性變數和靜態變數在什麼時候初始化?
執行/編譯/鏈結時出現的錯誤
說一下c++和c的區別
設計思想上:
c++是物件導向的語言,而c是面向過程的結構化程式設計語言
(面向過程——步驟化
面向過程就是分析出實現需求所需要的步驟,通過函式一步一步實現這些步驟,接著依次呼叫即可
物件導向——行為化
物件導向是把整個需求按照特點、功能劃分,將這些存在共性的部分封裝成物件,建立了物件不是為了完成某乙個步驟,而是描述某個事物在解決問題的步驟中的行為)
語法上:
c++具有封裝、繼承和多型三種特性
c++相比c,增加多許多態別安全的功能,比如強制型別轉換、c++支援正規化程式設計,比如模板類、函式模板等
c++的const(神奇的東西)
這就是c++中的常量摺疊:指const變數(即常量)值放在編譯器的符號表中,計算時編譯器直接從表中取值,省去了訪問記憶體的時間,從而達到了優化。
而在此基礎上加上volatile修改符,即告訴編譯器該變數屬於易變的,不要對此句進行優化,每次計算時要去記憶體中取數。(但有的編譯器不會理會volatile)如果不用volatile,取const常量可能就從暫存器或符號表中取得了。
c/c++ 中指標和引用的區別
1.指標有自己的一塊空間,而引用只是乙個別名;
2.使用sizeof看乙個指標的大小是4,而引用則是被引用物件的大小;
3.指標可以被初始化為null,而引用必須被初始化且必須是乙個已有物件 的引用;
4.作為引數傳遞時,指標需要被解引用才可以對物件進行操作,而直接對引用的修改都會改變引用所指向的物件;
5.可以有const指標,但是沒有const引用;
6.指標在使用中可以指向其它物件,但是引用只能是乙個物件的引用,不能 被改變;
7.指標可以有多級指標(**p),而引用只有一級;
8.指標和引用使用++運算子的意義不一樣;
9.如果返回動態記憶體分配的物件或者記憶體,必須使用指標,引用可能引起記憶體洩露。
ps.指標和引用到了彙編一層的時候,執行的命令可以說是一樣的
c++11的常用新特性(非常好!)
c++11中stl的四種智慧型指標
ps:智慧型指標是在析構函式中清楚記憶體的
由於智慧型指標本質是類,因此智慧型指標是通過析構函式釋放記憶體的!
unique_ptr代替了auto_ptr,因為前者——兩個unique_ptr不能指向乙個物件,即 unique_ptr 不共享它所管理的物件。它只能對資源管理許可權實現轉移。這意味著,記憶體資源所有權可以轉移到另乙個 unique_ptr,並且原始 unique_ptr 不再擁有此資源。
c++17新特性
c++17中的inline變數
一點注釋:曾經的c++,多個檔案引用同乙個標頭檔案時,若想使用乙個共同的變數,則須在標頭檔案中使用extern關鍵字,現在可以用inline了
這裡是extern的用法
c++內聯函式
c++四種強制型別轉換
紅黑樹的優點(非c++)
c++stl中的allocater
這個東西涉及到stl本質的記憶體使用
c++中stl容器的底層原理
c++中stl利用迭代器刪除元素
關聯容器和順序容器有不同的情況,對於list來說,它使用了不連續分配的記憶體,並且它的erase方法也會返回下乙個有效的iterator,因此上面兩種正確的方法都可以使用。
c++中stl的reserve()和risize()
c++中struct和class的區別
c++ 虛函式實現機制
靠vtpr虛函式指標和vtbl虛函式表
c++繼承過程中記憶體的分配
c++中純虛函式
c++單繼承多繼承虛繼承
堆與棧的區別和c++的記憶體分割槽
c++如何檢測記憶體洩漏
c++ volatile關鍵字解析
深入到了組合語言和暫存器層面的理解,由於debug版和release版對彙編層次的語言檢測標準不一樣,所以引到下乙個問題
debug版和release版的區別
拷貝建構函式,淺拷貝和深拷貝
模板的詳細介紹
模板和虛函式的選擇
個人理解:
虛函式更多是針對一種函式、一種操作所實現的多樣性(做麵食裡做蒸饅頭和做炒麵的區別,主料相同但做法完全不同)
模板更多是針對同一種操作裡不同型別所實現的多樣性(烤串裡烤羊肉串和豬肉串的區別,做法完全相同但主料不同)
new和delete的實現原理
override(重寫)與final(最終)兩個關鍵字
關於變數位址+1的有趣實質
整理自用 C 函式傳遞
這個本來是沒什麼需要說明的,但是偏偏是錯了幾道題,發現自己思考不夠嚴謹。函式傳遞,確實存在著值傳遞 址傳遞和引用傳遞三種。但是要搞清楚著通常是對於什麼變數而言的。以下三個是所謂的值傳遞,值傳遞和引用傳遞最簡單的表達形式 int abs int a intabs int a intabs int a ...
C 特性自用學習筆記
本文用於隨手記錄一些自己學習中碰到的c 特性。對於以下std tuple std tuple int,std string,double foo 在未有該特性前,對其解包很麻煩,使用std get要寫一大串 std cout std get 0 foo std get 1 foo std get 2...
C 自用DataGridView 分頁轉EXCEL
新增引用 com microsoft excel 11.0 object library 命名空間 用於將datagridview內容分頁轉excel 轉為excel每頁的最大轉換行數 函式中未對excel 頁可儲存最大行65535進行傳入引數限制,如有需要可自行新增判斷語句 if dgv.colu...