一、介紹
1.1 教程特點
- 一篇文章從入門到就業
- 有圖有真相,有測試用例,有作業;
- 提供框架代碼,作業只需要代碼填空
- 規范開發習慣,培養設計能力
1.2 參考書
- 唯一參考書《C++ Primer 第5版》?
- 參考書下載:
- 藍奏云:C++_Primer_5th_Edition_English.pdf?
二、集成開發環境
三、 教程內容
1 基礎部分
難度系數(1):*
1.1 變量和基本類型
1.1.1?變量和基本類型(V)
1.1.2?引用類型 reference type(V)
1.1.3?賦值語句 assignment statement(變量與常量const)(V)
1.2 標準輸入輸出 I/O
1.2.1?輸出變量(cout與endl換行顯示)
1.2.2?輸入變量(cin 及字符串類型string)
1.2.3?名稱空間 name space std
1.2.4?getline 讀取一行內容
1.2.5?cin 扔給 getline 一個回車,程序炸了
1.2.6?輸出格式化 format control
1.3 表達式
1.3.1?算術表達式 expression
1.3.2?整除/ 與 求余% 運算
1.4 關系和邏輯運算符
1.4.1?關系運算符和邏輯運算符 bool
1.5 for循環語句
1.5.1?for循環語句
練習1?說一萬次我愛你(讓計算機去做舔狗)(A)
練習2?數列前n項和?(計算機暴力計算)(A)
練習3?打印九九乘法表(雙重循環)?(A)
練習4?計算圓周率π(隱式類型轉換)(高端大氣上檔次)(A)
1.6 if語句
1.6.1?if語句
練習?求一個數的絕對值
1.7 函數
1.7.1?函數function definition定義與調用call
1.7.2?棧變量的作用域
1.7.3?向函數傳遞參數(傳值、傳引用、傳const引用)
練習1?求兩個數的最大值max
練習2?交換兩個變量的值 swap?(A)
開發小助手:Visual Studio 2022 顯示函數參數類型
1.7.4?模板函數 template function
練習3?輸出正整數N各個位上的數字?(A)
練習4?求最大公約數?(A)
1.7.5?遞歸函數 recursive function :輸出正整數N各個位上的數字
練習5?數列前n項和(遞歸函數)
練習6?判斷一個數是否為素數(A)
Visual Studio 2022 調試Debug
10分鐘學會Visual Studio調試C++程序(CMake版)(完整版,推薦!)
1.8 動態內存
難度系數(4):* * * *
到這里難度開始突然增加。建議你遇到不清楚的,一定要多問我。這是加速學習的唯一捷徑!
1.8.1?堆heap棧stack與指針變量pointer(地址變量)
1.8.2?解引用 dereference operator
1.8.3?易混淆的符號&
1.8.4?向函數傳遞參數(傳地址)
1.8.5?堆數組 heap array
練習1?本科生平均學分績點GPA計算?(自頂向下設計+斷點調試) (A)(V)
練習2?冒泡排序 Bubble Sort(提取函數)(自頂向下設計+斷點調試) (A)(V)
2 標準庫STL基礎
難度系數(2):* *
這一部分難度一般,會用就行。你應該不會遇到太多問題。因為和其他語言也沒區別。
標準庫又叫標準模板庫STL(Standard Template Library),是C++語言的一部分。
主要由三部分組成,分別是容器,迭代器,算法。
2.1 數組
2.1.1?數組 vector
練習?for循環求數組元素的最大值?(A)
2.1.2?字符串 string
2.2 迭代器
2.2.1?auto 關鍵字?(C++11)
2.2.2?迭代器 iterator
2.2.3?范圍for循環(遍歷數組的三種方式) (C++11)
2.2.4?C++標準庫STL容器使用值語義
2.3 容器
2.3.1?鏈表 list?這個鏈接是官方示例教程,可以點開每一個子鏈接看里面的示例代碼。示例代碼都是最標準最典型的用法。我們應該學會從閱讀官方代碼中汲取營養,這個習慣應該盡早養成。
2.3.2?關聯容器(字典) map
2.3.3 集合?set
2.3.4?標準庫所有容器
2.4 lambda 表達式
2.4.1?lambda 表達式
2.5 算法
2.5.1?刪除容器的元素 remove erase
2.5.2?快速排序(std::sort)
2.5.3?標準庫所有算法
3 面向對象
難度系數(3):* * *
到了這里,類與對象是兩個新概念,你可能覺得有點奇怪。但是他們是面向對象編程語言最有威力的設施。幾乎沒有之一。
3.1類與對象
3.1.1?類 struct/class 與 對象 object(A)
3.1.2?類的成員函數 member function 與類成員的訪問控制(public private)
3.1.3?成員函數的聲明 declaration 與定義 definition 分開
3.1.4?對象之間賦值 object assignment(對應成員逐個賦值)
3.1.5?struct與class(唯一的區別是訪問控制)
練習?基于GPA排名計算本專業保研名單?(自頂向下設計+斷點調試) (A)(V)
3.1.6?類的const成員函數
3.1.7?堆對象數組
3.1.8?指針成員操作符 member operator
4 復制控制(深拷貝)
難度系數(5):* * * * *
這里要求你同時掌握堆內存管理和面向對象。難度陡然增加。復制控制是C++的靈魂。C在這里產生了大量Bug,動態內存管理直接讓Java產生的垃圾回收機制。
在C++里,你要用完全不同的方式獨自處理他們。
遇到問題一定記得第一時間問我。你可以認為我24小時都在等待你的問題。
4.1?構造函數constructor
4.2?構造函數與成員變量初始化
4.2 構造函數成員初始化列表(member initializer lists)(待實現)
4.3?拷貝構造函數(copy constructor )?(淺拷貝)
4.4?非平凡的類與復制控制 (深拷貝 deep control)
4.5?類的靜態成員變量 static member
Visual Studio 2022 調試Debug
3分鐘掌握C++調試神器-調用堆棧?(V)
4.6?繼承 inherit
4.7?多態 polymorphic 與虛函數 virtual function
5 輸入輸出I/O
難度系數(3):* * *
你之前肯定沒有用代碼操作過你本機電腦上的文件,這是一個操作性很強的章節。
有可能你創建了一個文件,也寫入了內容,但你可能都不知道它在你電腦的哪個文件夾里。是的,你會遇到的。
還是那句話,遇到任何問題不要懷疑自己,直接來找我。
5.1 文本文件讀寫
5.1.1?輸出變量的值到文件 write file
5.1.2?從文件讀取變量的值 read file
5.1.3?從文件里一次讀取一行 getline
練習1?讀取文本文件中的神秘數據?(A)
5.2 字符串流stringstream
5.2.1?從字符串流 stringstream 中讀取變量的值
6 操作符重載
6.1?輸出操作符重載 operator overloading 與友元函數 friend
6.2?輸入操作符重載 input operator overload
練習1?讀取文件中的學生信息并顯示?(自頂向下設計+斷點調試) (A)(V)
6.3?小于操作符重載與對象排序
7 C++小項目
項目1?學生通訊錄管理:文本文件增刪改查(C++版本)(自頂向下設計+斷點調試) (A)(V)
項目2?學生通訊錄管理:文本文件增刪改查(C 版本)(自頂向下設計+斷點調試) (A)(V)
項目3?貪吃蛇(控制臺版)?(A)
四、其他
1?相關C++學習網站和參考書下載
2?留學生輔導成績反饋
3?看看985高校的《數據結構》教材能差到什么程度
4?為什么我會感覺中國大學教材很爛?
5?中國的高校計算機教育存在哪些問題?
6?C++ 知名開源庫 整理