Effective C++:day 01
條款1:視C++為一個語言聯邦
今天的C++已經是個多重泛型程式語言(支援過程、面向物件、函式、泛型、超程式設計),可以看成由以下四種次語言組成:C、Object-Oriented C++、Template C++、STL.每個次語言都有自己的規則,記住這些就更容易理解C++了。
條款2:儘量以const, enum, inline, 替換#define
#define 定義的常量難以追蹤,且在程式設計中可能導致盲目標碼。對於單純的常量,最好以const 物件或enums替換#defines,對於形似函式的巨集,最好使用行內函數(inline)替換#defines
相關推薦
Effective C++:day 01
條款1:視C++為一個語言聯邦 今天的C++已經是個多重泛型程式語言(支援過程、面向物件、函式、泛型、超程式設計),可以看成由以下四種次語言組成:C、Object-Oriented C++、Template C++、STL.每個次語言都有自己的規則,記住
《Effective C++》筆記 01
1 - 讓自己習慣 C++ 《Effective C++ —— 改善程式與設計的 55 個具體做法》,第 3 版。 豆瓣讀書:https://book.douban.com/subject/5387403/ C++ 語言是一門有著眾多特性的語言,要發揮其真正的、全部威力,
Effective C++:類與函式的設計和申明
在看《Effective C++》這本書的過程中,我無數次的發出感嘆,寫得太好了,句句一針見血,直接說到點上。下面的索引對應的是書中的章節。 18:努力讓介面完美且最小化 為了客戶端的方便呼叫,介面中可能會定義很多方法,而其中可能右很多方法是多餘或是重複的,這樣會導致介面中方法太多,讓
Effective C++:面向物件與繼承
1:子類不要覆寫父類的非虛擬函式。 為了解釋方便,先看一個簡單的例子。 class A { public: A(int d):data(d){ } void print() { cout<<"A prin
Effective C++:條款12:複製物件時勿忘其每一個成分
(一) 一個繼承體系的宣告: class Date {...}; class Customer { public: ... private: string name; Date lastTransaction; }; class PriorityCustomer :
More Effective C++:不使用多型性陣列
類繼承的最重要的特性是你可以通過基類指標或引用來操作派生類。這樣的指標或引用具有行為的多型性,就好像它們同時具有多種形態。C++允許你通過基類指標和引用來操作派生類陣列。不過這根本就不是一個特性,因為這樣的程式碼根本無法如你所願地那樣執行。 假設你有一個類BST(比如是搜
More Effective C++:Item 27
溫習More Effective C++,對於Item 27:要求或禁止在堆中產生物件,整理思路於此文。 編譯期控制 通過禁用定義物件所需的條件,即可在編譯期阻止物件的定義。 定義堆物件所需的條件 class operator n
Effective C++:條款03:儘可能使用const
(一)const與指標: char greeting[] = "HELLO"; char *p = greeting; const char *p = greeting; //指標所指物不能改變 char* const p = gr
Effective C++:0 Introduction
Terminology 1. 所謂declaration,是告訴編譯器某個東西的名稱和型別,但略去細節。definition的任務是提供給編譯器一些宣告式所遺漏的細節。 2. 所謂default建構函
Effective C++:面向對象與繼承
har 編程 caption 構造 bsp str 第一次 靜態 函數 在看《Effective C++》這本書的過程中,我無數次的發出感嘆,寫得太好了,句句一針見血,直接說到點上。下面序號代表書的章節號(原書更新時間不明確,實際請以原書為準) 1:子類
Effective C++:條款23:寧以non-member、non-friend替換member函數
有關 權力 packaging mem 以及 對象 code 什麽 log (一) 有個class來表示網頁瀏覽器: class WebBrowser { public:
Effective C++: 01讓自己習慣C++
編程語言 error tap span fin cal effective point amp 01:視C++為一個語言聯邦 1:今天的C++已經是個多重範型編程語言(multiparadigm programming language),一個同時支持過程
effective c++ 條款06:若不想使用編譯器自動生成的函數,就該明確拒絕
ble 這樣的 ive c++ 拒絕 類對象 析構 並且 防止 記住:為防止編譯器暗自提供的功能,可將相應的成員函數聲明為privae並且不予實現。也可以使用Uncopyable這樣的父類實現。 對於獨一無二的對象,希望不支持拷貝構造函數和賦值操作符。 class Hom
effective c++ 條款07:為多態基類聲明virtual析構函數
pub effective atomic water delet () IV del effect 記住:帶多態性質的基類應該聲明一個virtual析構函數。如果class帶有任何virtual函數,它就應該擁有一個virtual析構函數。class的設計目的如果不是作為基
effective c++ 條款13:以對象管理
行為 fec ret 拷貝構造函數 AR clas 釋放 AS RR 記住: 為防止資源泄漏,請使用RAII對象,它們在構造函數中獲得資源並在析構函數中釋放資源。 兩個常被使用的RAII類分別是tr1::shared_ptr和auto_ptr。前者通常是較佳選擇,因為其c
effective c++ 條款15:在資源管理類中提供對原始資源的訪問
nth invest AR and effect ptr 比較 c++ 顯示轉換 記住: APIs往往要求訪問原始資源,所以每一個RAII類應該提供一個“取得其所管理之資源”的辦法。 對原始資源的訪問可能經由顯示轉換或隱式轉換。一般而言顯示轉換比較安全,但隱式轉換對客戶比
effective c++ 條款16:成對使用new和delete時要采用相同形式
最好 class 你在 pan TE fec IV line PE 記住: 如果你在new表達式中使用[ ],必須在相應的delete表達式中也是用[ ]。如果你在new時不使用[ ],一定不要在delete時使用[ ]。 string* stringPtr1 = n
effective c++ 條款17:以獨立語句將newd對象置入智能指針
執行 順序 ID 條款17 隱式轉換 ive 遺失 解決 red 記住: 以獨立語句將newd對象存儲於智能指針內。如果不這樣做,一旦異常被拋出,有可能導致難以察覺的資源泄漏。 int priority(); void processWidget(std::tr1::
effective c++ 條款19:設計class猶如設計type
調用 還需要 構造 protected explicit protect cte 操作符 創建 記住: 在定義一個新type之前,確定已經考慮過本條款覆蓋的主題 要設計高效的class,需要回答以下的問題:1. 對象如何去創建和銷毀?這是構造函數和析構函數的問題,當然如
More Effective C++ - 章節一 : 基礎議題
def pre 基礎 poi 地址 否則 相同 不用 完美世界 1. 仔細區分 pointers 和 references references和pointers的差別描述如下: pointer:當需要考慮"不指向任何對象"時,或者是考慮"在