青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Impossible is nothing  
  愛過知情重醉過知酒濃   花開花謝終是空   緣份不停留像春風來又走   女人如花花似夢
公告
日歷
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
統計
  • 隨筆 - 8
  • 文章 - 91
  • 評論 - 16
  • 引用 - 0

導航

常用鏈接

留言簿(4)

隨筆分類(4)

隨筆檔案(8)

文章分類(77)

文章檔案(91)

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

面向過程的編程風格 ? Procedural Programming

1.? C++ 不允許改變改變 reference 所代表的對象,對 reference 的所有操作與對“ reference 所代表的對象”所進行的操作相同。

2.? by reference 方式傳遞對象當作函數參數時,復制的將是對象的地址,函數中對該對象的所有操作都相當是對傳入的對象進行間接操作。

3.? pointer reference 的最重要差異是, pointer 可以為空,使用前一定要確保其值非 0 ,而 reference 必定代表某個對象,不必作此檢查。

4.? 編譯器無法根據函數返回值型別來區分兩個具有相同名稱的函數,因為返回值型別無法保證提供我們一個足以區分不同重載函數的情境。

5.? 由函數指針尋址出來的函數,其調用方式和一般函數相同。

6.? 可以給函數指針賦予初值,函數名稱即代表了函數的地址。

7.? 標準的或項目專屬的頭文件應用尖括號擴住;用戶自行提供的頭文件則使用引號。

2002-6-3

泛型編程風格 ? Generic Programming

1.? Standard Template Library (STL) 主要由兩種組件構成:容器 container 和泛型算法 generic algorithm < 通過 function template 技術,實現與容器及數值類型無關之功能 >

2.? 容器分類: < 切記: vector 可以是空的,數組則否 >

序列式容器 sequential container vector, list, deque……

關聯式容器 associative container map, set, ……

3.? iterator const_iterator 實際上是各個容器定義式內的嵌套 nested 型別。

4.? 使用泛型算法須 #include <algorithm> ,使用 function object #include <functional>

5.? function object 是某種 class 的實體對象,該 class function call 運算符進行了重載操作從而可使 function object 被當作一般函數來使用。令 function call 運算符成為 inline ,從而消除“通過函數指針來調用函數“時需付出的額外代價。

6.? function object adapter 會對 function object 進行修改操作。

7.? 綁定配接器 binder adapter <bind1nd, bind2nd> 會使 bineary function object 變成 unary function object negator adaper <not1, not2> 會逆轉 function object 的真偽值;另外一種有用的 adapter 叫做 instertion adapter <back_inserter, inserter, front_inserter> #include <iterator>

8.? map 被定義為一對數值,其中 key 通常是個字符串,扮演索引角色,另一個數值是 value

9.? 任何一個 key 值在 map set 內最多只有一份,若要多份相同 key 值,使用 multimap multiset

完成日期: 2002-6-2

基于對象的編程風格 ? Object-Based Programming

1 .在 class 內部定義的 member?? 函數被自動視為 inline 函數。對 inline 函數而言,聲明在 class 內部或外部并無區別,同 non-member inline 函數一樣,它應于頭文件中定義。

2 Triangular t(); 被編譯器視為一個函數定義!并不是聲明或定義一個 Triangular 對象!

3 .以某個 class object 作為另一個 object 的初值時,會發生 default memberwise initialization < 實際上是自動產生一個 copy constructor> ,可以為該 class 提供一個 copy constructor 來改變這一默認行為模式。

4 .若有必要為 class 撰寫 copy constructor ,則同樣有必要為它撰寫 copy assignment operator ,除非撰寫 copy constructor 的目的僅僅是為了激活編譯器實施 NRV 優化。

5 .凡是在 class 主體以外定義的 const member function ,必須同時在聲明與定義時都提供 const 關鍵字, const 緊接于函數參數表之后。

6 member function 返回一個指向 member data non-const reference ,實際上等于將該 member data 開放出去,允許程序在其它地方加以修改。由于函數可以根據參數 const 與否 ?? 而重載,故可以提供兩份定義,一份為 const 版本,一份為 non-const 版本。

8.? 設計 class 時,鑒定其 const member function 是一件很重要的事情!

9.? member data 聲明為 mutable 表明:對該 member data 的修改不會破壞 class object 的常數性。

10.????????????? 欲以一個對象復制出另一個對象,先確定兩個對象是否相同是個好習慣。

11.????????????? 運算符的重載規則:不可以引入新的運算符,除了 ., .*, ::, ?: 4個運算符,其它運算符皆可被重載;運算符的操作數 operand 不可改變;運算符的優先級不可改變;運算符函數的參數列中必須至少有一個參數為 class 型別。

12 increment decrement 運算符的前置及后置版本都可直接施行于 class object 其之上,編譯器會自動為后置版產生一個 int 引數,其值必為 0

13 .所謂 friend ,具備了與 class member function 相同的存取權限,可以存取 class private member

14 .只要 class 設計者顯示提供了 copy assignment operator ,它就會被用來取代 default memberwise copy 行為。

15 .當編譯器在編譯過程中遇到函數調用,例如 lt(ival) lt 可能是函數名稱,可能是函數指針,也可能是一個提供了 function call function object 。如果 lt 是個 function object ,編譯器會在內部將此語句轉化為: lt.operator(ival)

16 function call 可以接受多個運算符,通常將 function object 當作參數傳給泛型算法。

17 .為了取得某個 member function 的地址,只需對函數名稱施以取址 address-of 運算符,同時,函數名稱之前必須先以 class object 運算符加以修飾,而返回型別及參數表皆不需指明,如: void (classname::*mfptr) (int) = &classname::mfname;

18 .注意所謂的 maximal munch 編譯規則,如: static vector<vector<int> > seq; 兩個 ”>” 號之間必須加有空格,否則無法成功編譯!

19 pointer to member function pointer to function 的一個不同點是:前者必須通過同類的對象加以調用。 .* 符號是針對 class object pointer to member selection 運算符, ->* 符號是針對 pointer to class object pointer to member selection 。使用它們時注意必須加上外圍小括號!如: (classobject.*mfptr)(par);

??????????????????????????????????????????????????????? 完成日期: 2002-6-18

?

面向對象編程風格 ?? Object-Oriented Programming

1.? 面向對象編程的兩項最主要的特性是繼承 inheritance 和多態 polymorphism

2.? 動態綁定 Dynamic binding 是面向對象編程風格的第三個獨特概念,即找出實際被調用的究竟是哪一個派生類的函數。而靜態綁定 Static binding 則在程序運行之前就決議出應該調用哪一個函數。

3.? 多態和動態綁定的特性只有在使用 pointer reference 時才能發揮。

4.? staitic member function 無法被聲明為虛擬函數。

5.? 任何一個類只要有純虛擬函數,程序就會因其接口的不完整而無法為它產生任何對象,這種類只能作為派生類的子對象 subobject 之用,而且派生類必須為所有純虛擬函數提供確切的定義。

6.? 根據一般規則,凡基類定義有虛擬函數,其 destructor 應聲明為 virtual 。但 Stanley B.Lippman 并不建議在這個基類中將其 destructor 聲明為 pure virtual ,而是提供空白定義: inline baseclass::~baseclass(){};

7.? 對于 public inheritance ,繼承而來的 public 成員和 protected 成員,無論在繼承體系中的深度如何,都可視為派生類自身擁有的成員。

8.? 每當派生類有某個 member 與其基類的 member 同名時,便會遮蔽住基類的那份 member ,若要在派生類中使用繼承而來的那份 member ,必須使用 class scope 運算符加以修飾。

9.? 不可為抽象基類定義任何對象,它們扮演的角色是每個派生類的 subobject ,基于此點,一般將抽象基類的 constructor 聲明為 protected 而非 public

10.????????????? 派生類之 constructor ,不僅必須為派生類之 data members 進行初始化操作,還需為其基類之 data members 提供適當的值。 copy constructor copy assignment operator 的情形也一樣,唯一棘手的是,必須明白調用基類的 copy assignment operator base::operator = (rhs);

11.????????????? 改寫基類提供的虛擬函數,派生類提供的定義其函數型別必須完全符合基類所聲明的函數原型,包括參數列、返回型別、常量型 const-ness 。但是,對于“返回型別”有個例外:當基類的虛擬函數返回某個基類形式(通常是 pointer reference )時,派生類中的同名函數可以返回該基類所派生出來的型別。

12.????????????? 在兩種情況下,虛擬函數機制不會出現預期行為: 1 )在基類的 constructor destructor 內; 2 )使用基類的對象而非對象的 pointer reference

13.????????????? typeid 運算符是 RTTI 的一部分,可以用它來查詢多態化的 class pointer class reference ,獲得其所指對象的實際型別。 typeid 運算符會返回一個 type_info 對象,其中存儲著與型別相關的種種信息。 #include<typeinfo>

完成日期: 2002-6-19

異常處理 ?? Exception Handling

1.? 初學者常犯的錯誤:將 C++ 異常和 segmentation fault 或是 bus error 這類硬件異常混淆在一起。

2.? 在異常處理機制終結某個函數之前, C++ 保證函數中的所有局部對象的 destructor 都會被調用。

3.? auto_ptr 是標準程序庫提供的 class template ,它會自動 delete 通過 new 表達式配置的對象。 auto_ptr dereference 運算符和 arrow 運算符予以重載,使得我們可以像使用一般指針一樣使用 auto_ptr 對象。 #include <memory>

4.? 如果 new 表達式無法從程序的自由空間 free store 配置到足夠的內存,它會拋出 bad_alloc 異常對象。如果要壓抑不讓 bad_alloc 異常被拋出,可以這么寫: somepointer = new (nothrow) someclass; 這樣,如果 new 動作失敗,返回值為 0

5.? 標準程序庫定義了一套異常類體系 exception class hierarchy ,其最根部是名為 exception 的抽象基類。 exception 聲明有一個 what() 虛擬函數,會返回一個 const char* ,用以表示被拋出異常的文字描述。 #include <exception>

6.? ostringstream class 提供“內存內的輸出操作”,輸出到一個 string 對象上。當需要將多筆不同型別的數據格式轉化為字符串表現式時,它尤其有用。 ostringstream 提供的 str() 可以返回對應的那個 string 對象。 #include <sstream>

7.? iostream 庫也對應提供了 istringstream class ,如果需要將非字符串數據的字符串表現式轉化為其實際型別, istringstream 可派上用場。

8.? string class 的轉換函數 c_str() 會返回 const char*

posted on 2006-06-03 17:47 笑笑生 閱讀(598) 評論(0)  編輯 收藏 引用 所屬分類: C++語言
 
Copyright © 笑笑生 Powered by: 博客園 模板提供:滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久福利资源站| 亚洲高清在线观看一区| 亚洲国产mv| 免费亚洲婷婷| 一本久道久久综合中文字幕| 亚洲国产日韩欧美在线动漫| 欧美精品三级日韩久久| 免费观看在线综合| 亚洲女同在线| 亚洲第一福利在线观看| 亚洲人成网在线播放| 欧美性片在线观看| 久久精品理论片| 欧美阿v一级看视频| 日韩亚洲视频在线| 亚洲一区精品在线| 在线日韩av片| 亚洲婷婷在线| 亚洲国产精品久久久久| 亚洲视频香蕉人妖| 91久久久久久久久| 亚洲一区二区在线视频| 一区二区亚洲欧洲国产日韩| 亚洲高清三级视频| 国产精品一区久久久| 欧美二区在线看| 国产啪精品视频| 亚洲精品午夜| 精品69视频一区二区三区| 99一区二区| 在线不卡中文字幕播放| 99re热精品| 一区精品在线播放| 一区二区三区四区五区视频| 在线观看成人av| 中国亚洲黄色| 日韩一级精品视频在线观看| 欧美综合国产| 亚洲欧美一区二区在线观看| 欧美成人自拍| 免费久久99精品国产| 欧美日韩一区二区三| 毛片一区二区三区| 国产亚洲精品aa| 亚洲午夜一二三区视频| 99re亚洲国产精品| 久久一本综合频道| 久久国产视频网站| 欧美日韩视频专区在线播放| 蜜臀a∨国产成人精品| 国产欧美日韩一区二区三区在线观看 | 欧美国产三区| 免费成人高清| 伊人久久综合| 久久精品一级爱片| 久久九九国产| 国产一区二区三区在线观看精品 | 99re8这里有精品热视频免费| 久久久亚洲人| 麻豆9191精品国产| 激情视频一区二区三区| 久久国产精彩视频| 久久免费黄色| 久久欧美肥婆一二区| 欧美性做爰猛烈叫床潮| 亚洲日本在线观看| 日韩午夜中文字幕| 欧美日韩一区二区三区| 亚洲日本中文字幕免费在线不卡| 亚洲看片网站| 欧美日韩在线观看视频| 一本久久知道综合久久| 亚洲免费中文| 国产视频欧美| 久久综合电影| 亚洲精品一区二区三区av| 一本久久青青| 国产精品天天摸av网| 亚洲欧美视频一区二区三区| 久久国产精品毛片| 精品二区久久| 欧美另类一区| 亚洲午夜精品在线| 久久综合五月| 一区二区高清在线观看| 国产精品伦理| 久久精品在线观看| 亚洲精品日本| 久久精品国产综合| 亚洲欧洲另类国产综合| 国产精品高清免费在线观看| 欧美在线www| 亚洲国产精品久久久久| 亚洲一区二区成人在线观看| 国产视频一区三区| 欧美成人国产| 亚洲欧美日韩专区| 亚洲国产一区二区视频| 欧美影院在线| 99re这里只有精品6| 国产视频一区在线观看| 欧美激情免费观看| 欧美一级二区| 一区二区激情视频| 欧美成在线观看| 欧美亚洲一区三区| 一色屋精品亚洲香蕉网站| 欧美片在线观看| 久久久久久久综合色一本| 夜夜嗨av一区二区三区中文字幕| 久久精品国产96久久久香蕉 | 国产精品成人v| 久热国产精品视频| 亚洲综合国产激情另类一区| 欧美激情一区二区久久久| 性欧美精品高清| 夜夜夜精品看看| 在线日韩精品视频| 国内精品久久久久久久影视蜜臀| 欧美精品日韩www.p站| 午夜综合激情| 亚洲色无码播放| 亚洲精品久久久久久久久久久久| 久久久久久高潮国产精品视| 亚洲一区二区欧美| 99综合视频| 亚洲另类一区二区| 亚洲国产美女久久久久| 在线国产日韩| 激情欧美一区二区三区| 国产综合色精品一区二区三区| 欧美视频一区二区三区在线观看 | 欧美一区=区| 亚洲视频第一页| 国产精品99久久久久久宅男| 欧美在线一区二区| 亚洲欧美日韩精品在线| 91久久精品国产91性色| 麻豆精品传媒视频| 久久久久久久网站| 久久精品国产亚洲高清剧情介绍| 亚洲欧美日韩视频二区| 一本色道久久99精品综合 | 欧美成人一区二区三区片免费| 亚洲欧洲av一区二区| 亚洲一区亚洲二区| 午夜精品久久久久99热蜜桃导演| 亚洲一区二区三区免费在线观看 | 另类图片国产| 欧美国产一区二区三区激情无套| 另类天堂视频在线观看| 欧美国产一区二区| 日韩亚洲欧美高清| 亚洲午夜在线观看视频在线| 亚洲在线1234| 久久精品在线免费观看| 久久综合伊人77777麻豆| 欧美高清在线精品一区| 欧美精品一区二区视频| 国产精品wwwwww| 国产主播一区二区三区| 亚洲激情视频网| 亚洲一级二级| 久久人人97超碰国产公开结果| 老司机精品导航| 亚洲欧洲一区| 亚洲欧美激情在线视频| 久久九九有精品国产23| 欧美激情91| 国产精品免费观看视频| 一区免费观看| 一区二区三区免费在线观看| 欧美在线关看| 亚洲国产高清在线观看视频| 亚洲一区3d动漫同人无遮挡| 久久久久高清| 欧美色视频一区| 在线免费不卡视频| 亚洲在线不卡| 欧美黄污视频| 午夜精彩视频在线观看不卡 | 国产亚洲精品bv在线观看| 亚洲日韩欧美视频| 欧美一区二区三区四区视频| 欧美成人一区在线| 亚洲欧美自拍偷拍| 欧美日韩视频在线观看一区二区三区| 国产综合久久久久久| 一区二区国产精品| 欧美 亚欧 日韩视频在线| 亚洲视频一区| 欧美日韩不卡| 亚洲第一区在线| 久久国产一区二区三区| 亚洲麻豆一区| 美国十次成人| 激情久久久久| 久久精品人人做人人爽| 一区二区成人精品| 欧美高清在线一区|