technorati 標籤:
c++,
大規模c++程式設計,
讀書筆記
原則92:可讀性(不僅僅是易用性)應該是使用運算子過載的主要原因。
指導方針11:乙個過載運算子的語義對客戶應該是自然的、明顯的和直觀的。
指導方針12:使用者自定義型別的過載運算子的語法屬性,應該反映已經為基本型別定義了的屬性。
原則93:讓使用者自定義運算子的語法屬性模仿預先確定的c++運算子,以避免意外並使它們的使用更可預知。
一些基本運算子屬性的總結:
// operators with similar declarationsclass t ;
t operator-(const t&); // - + ~ (unary)
intoperator!(const t&); // ! (unary)
t operator+(const t&, const t&); // + - * / << >> % & ^ |
intoperator==(const t&, const t&); // == != < <= > >=
intoperator&&(const t&, const t&); // && ||
// if the type is pointer-like (i.e., p = t*)
class p ;
// if the type is pointer-to-const-like (i.e., pc = const t*)
class pc ;
原則94:c++語言本身可以作為使用者自定義運算子模仿的乙個客觀和適宜的標準。
原則95:過載運算子中的不一致問題,對客戶來說可能是明顯的、討厭的和高代價的。
c++要求下列運算子是成員:
= 賦值
下標
-> 類成員訪問
() 函式呼叫
(t) 轉換("cast")運算子
new (靜態)分配運算子
delete (靜態)刪除運算子
《大規模C 程式設計》讀書筆記19
原則59 只保留乙個不透明指標 指向包含乙個類的所有私有成員的結構 會使乙個具體的類能夠將其客戶程式與其實現絕緣。定義35 乙個具體類如果滿足下列條件,就是完全絕緣的 只包含乙個資料成員,它表面上是不透明指標,指向乙個定義具體類的實現的non const struct 定義在.c檔案中 不包含任何其...
《大規模C 程式設計》讀書筆記23
technorati 標籤 c 大規模c 程式設計,讀書筆記 原則83 乙個類是乙個adt的具體規範,乙個元件是乙個抽象的具體規範。原則84 原則85 在任何可行的地方,延緩不必要功能的實現可以降低開發和維護成本,並且可以避免過早地進行精確的介面和行為設計。定義46 如果有效實現定義在乙個物件上的操...
《大規模C 程式設計》讀書筆記25
technorati 標籤 c 大規模c 程式設計,讀書筆記 原則96 不必為了多型行為而損害語法問題,例如雙目運算子的對稱隱式轉換。原則97 虛函式實現行為上的變化 資料成員實現值的變化。定義47 隱藏 hide 乙個成員函式若與在乙個基類或檔案作用域中宣告的某個函式同名,則隱藏了那個函式。過載 ...