effective c++ 思維導圖

来源:http://www.cnblogs.com/harlanc/archive/2017/04/25/6760057.html
-Advertisement-
Play Games

歷時兩個多月的時間,終於把effective c++又複習了一遍,比較慢,看的是英文版,之前看的時候做過一些筆記,但不夠詳細,這次筆者是從頭到尾的翻譯了一遍,加了一些標題,先記錄到word裡面,然後發佈到博客園上。這麼做是為了方便查閱,複習C++,同時練習英文,希望這些帖子也能夠對大家有所幫助。 有 ...


歷時兩個多月的時間,終於把effective c++又複習了一遍,比較慢,看的是英文版,之前看的時候做過一些筆記,但不夠詳細,這次筆者是從頭到尾的翻譯了一遍,加了一些標題,先記錄到word裡面,然後發佈到博客園上。這麼做是為了方便查閱,複習C++,同時練習英文,希望這些帖子也能夠對大家有所幫助。

有人回覆說有些過時了,的確,但大部分還都是effective的,可以看scott meyers關於這個問題的的回覆:

is effective c++ still effective?

精讀一本經典書,每次都有新的發現。

筆者水平有限,肯定有很多錯誤或者說不明白的地方,希望大家能夠指正。

將書的章節以思維導圖的形式展示出來能夠一目瞭然,也可以將這些章節聯繫起來,增加理解,現在有很多思維導圖軟體,但博客園只能插入圖片,不能把鏈接也放入其中,所以只能用博客園的圖表功能畫一個“思維導表”出來了。

Effective C++ 讓你自己適應C++ Item 1 將c++視為一個語言聯邦
Item 2 儘量使用const,枚舉(enums),內聯(inlines),不要使用巨集定義(define) 
Item 3 在任何可能的時候使用 const 
Item 4 確保對象被使用前進行初始化
構造函數,析構函數和賦值操作符 Item 5 瞭解c++預設生成並調用的函數
Item 6 如果你不想使用編譯器自動生成的函數,你需要明確拒絕 
Item 7 在多態基類中將析構函數聲明為虛析構函數
Item 8 不要讓異常(exceptions)離開析構函數
Item 9 絕不要在構造函數或者析構函數中調用虛函數
Item 10 讓賦值運算符返回指向*this的引用 
Item 11 在operator=中處理自我賦值
Item 12 拷貝對象的所有部分
設計和聲明 Item 13 用對象來管理資源
Item 14 對資源管理類的拷貝行為要謹慎
Item 15 在資源管理類中提供對原生(raw)資源的訪問
Item 16 成對使用new和delete時要用相同的形式
Item 17 使用單獨語句將new出來的對象放入智能指針 
Item 18 使介面容易被正確使用,不容易被誤用
Item 19 像設計類型(type)一樣設計類
Item 20 優先使用按const-引用傳遞(by-reference-to-const)而不是按值傳遞(by value)
Item 21 當你必須返回一個對象的時候,不要嘗試返回引用
Item 22 將數據成員聲明成private
Item 23 寧可使用非成員非友元函數函數也不使用成員函數 
Item 24 如果函數的所有參數都需要類型轉換,將其聲明成非成員函數
Item 25 實現一個不拋出異常的swap 
實現 Item 26 儘量推遲變數的定義
Item 27 儘量少使用轉型(casting)
Item 28 不要返回指向對象內部數據(internals)的句柄(handles)
Item 29 為異常安全的代碼而努力 
Item 30 理解內聯的裡裡外外 (大師入場啦)
Item 31 把文件之間的編譯依賴降到最低
繼承和麵向對象設計 Item 32 確保public繼承建立“is-a”模型
Item 33 避免隱藏繼承而來的名字 
Item 34 區分介面繼承和實現繼承 
Item 35 考慮虛函數的替代者
Item 36 永遠不要重新定義繼承而來的非虛函數 
Item 37 永遠不要重新定義繼承而來的函數預設參數值 
Item 38 通過組合(composition)為 “has-a”或者“is-implemented-in-terms-of”建模 
Item 39 明智而謹慎的使用private繼承 
Item 40 明智而謹慎的使用多繼承
模板和泛型編程 Item 41 理解隱式介面和編譯期多態
Item 42 理解typename的兩種涵義
Item 43 瞭解如何訪問模板化基類中的名字
Item 44 將與模板參數無關的代碼抽離出來
Item 45 使用成員函數模板來接受“所有相容類型” 
Item 46 如果想進行類型轉換,在模板內部定義非成員函數 
Item 47 使用traits class表示類型信息
Item 48 瞭解模板元編程
Item 49 理解new-handler的行為
定製new和delete Item 50 瞭解何時替換new和delete 是有意義的 
Item 51 實現new和delete的時候要遵守約定
Item 52 如果你實現了placement new,你也要實現placement delete
雜項 Item 53 關註編譯器發出的警告
Item 54 讓你自己熟悉包括TR1在內的標準庫
Item 55 讓你自己熟悉Boost

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 #include 2 #include 3 4 using namespace std; 5 6 class Component 7 { 8 public: 9 virtual void operation() = 0; 10 }; 11 12 class ConcreteComponentA:... ...
  • 靜態工廠方法是一種將類的運用者和產生著隔離的設計模式,它是一種創造型模式,但是它不屬於23種基本設計模式中的一種,它是理解抽象工廠的基礎 "參考yqj2065的博客" 上課時yqj2065要求:除了JDK等框架或工具中的類,自己編寫的類不得使用new創建對象(Test除外)。 據說是因為使用new會 ...
  • 概述: GOF定義:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。 在軟體開發特別是DSL開發中常常需要使用一些相對較複雜的業務語言,如果業務語言使用頻率足夠高,且使用普通的編程模式來實現會導致非常複雜的變化,那麼就可以考慮使用解釋器模式構建一個解釋 ...
  • 讀完了這本書,收穫很多,對程式設計有了很多新的理解。將每章模式的大概要點做了些筆記以備查閱,一些設計模式書讀完也對其瞭解得不是很透徹,需要以後在實踐中來不斷地加深理解吧。讀書過程中用Java跟著實踐了些部分模式的代碼上傳到了 "https://github.com/wanghaoxi3000/des ...
  • 1、使用Eclipse 建立Maven項目(webapp OR quickstart) 2、配置Maven,如下: 3、建立啟動Application 4、編輯Controller 5、通過application.properties對項目進行配置 項目文件佈局如下: 啟動Application程式 ...
  • 現象: 同事負責的項目轉到我的頭上,整理服務過程中發現了隊列的積壓問題。 為了搞清楚積壓的嚴重程度, 對隊列任務數每分鐘進行一次採樣,生成一個走勢圖, 隊列積壓情況一目瞭然,非常嚴重。 分析: 聽了同事對系統的介紹,猜測是mongo性能影響了處理效率,於是針對mongo進行分析 1. 使用mongo ...
  • 1. 前言 2. 所謂習慣認知 3. 開門見山的萬金油 第1條:抽象類設計註重對象性,介面設計註重服務性 第2條:更近的抽象類,更遠的介面 第3條:子類間有關係時考慮用抽象類,沒有關係時一定要用介面 第4條:版本迭代中優先考慮使用抽象類而不是介面 4. 設計是個性的妥協 5. 參考資料 1. 前言 ...
  • 程式優化是用於消除程式中大量的if else這種判斷語句 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...