Effective C 學習筆記

2021-09-29 06:50:00 字數 884 閱讀 9629

注:學習侯捷老師翻譯的effective c++ 

e.g:

// 將a和b中的較大值,傳入f

#define call_with_max(a, b) f((a) > (b) ? (a) : (b))

以上寫法,對於如下使用方式會存在問題:

int a = 3, b = 0;

call_with_max(++a, b); // a被加了兩次

call_with_max(++a, b+10); // a被加了一次

可以用template inline函式來代替#define:

template inline void call_with_max(const t& a, const t& b)
記住:

對於形似函式的巨集定義,可以考慮用 內聯函式代替

const迭代器    const_iterator

std::vector::const_iterator itt

const std::vector::iterator citor

const用途:

const operator* (const t& lhs, const t& rhs);  // 避免了(a * b) = c的費解

const t& operator (std::size_t pos) const;

t& operator (std::size_t pos);

const成員函式不可以更改物件內任何non-static成員變數

Effective C 學習筆記

學習effective c 已經有相當長的一段時間了,今天抽出時間又堵了一遍第一部分 c語言 c 以c語言為基礎,幾乎支援所有的c語言成分,例如區塊 語句 預處理 內建資料型別 陣列 指標等,c語言的侷限是 沒有模板 沒有異常 沒有過載 物件導向的c 也就是加上了物件特性的c,類 封裝 繼承 多型 ...

Effective C 學習筆記

1 c 是乙個複合式的語言 c 中不同部分有著不同的語言特性,例如 1.1 在c中傳遞形參時,按照值傳遞比按照指標傳遞效率更高 1.2 在物件導向程式中,物件要按照const引用而不是按照值傳遞 1.3 在stl程式設計中採取按照值傳遞方式 所以說c 中沒有統一的準則,要按照不同的特性採取不同的使用...

effective c 學習筆記

如果不考慮應用程式的使用場合,僅僅考慮語言的靈活性,我贊成作者的想法。但是不同的應用它會有不同的效能要求,所以語言的選擇,應該是用 最適合 條款去選擇。使用巨集定義常量,若定義在標頭檔案中,則所有包含標頭檔案的都可以使用。巨集定義,在預處理的時候進行替換。巨集定義一些簡單的函式,可以減少呼叫開銷,但...