版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+中級(jí)培訓(xùn),員工培訓(xùn)中心 2005年7月1日,蔡利元,課程內(nèi)容,第一章: 類(lèi) 第二章:接 口 第三章:運(yùn)算符重載 第四章:模 板,第一章: 類(lèi),基本概念 類(lèi)的基本特性 類(lèi)的應(yīng)用的特例,基本概念,namespace Class names Class members Member Functions Static Member Functions Unions C+ Bit Fields Nested Class Declarations Type Names in Class Scope Multiple Base Classes Virtual Functions Abstract Cla
2、sses Controlling Access to Class Members private Members protected Members public Members Access Specifiers for Base Classes,priavte,public、protected Friends Constructors Destructors Conversion Functions the new operator and the delete operator Copying Constructor Functions Interface,類(lèi)的基本特性,構(gòu)造函數(shù)與拷貝構(gòu)
3、造函數(shù) 靜態(tài)成員與友元 組合與繼承,構(gòu)造函數(shù)與拷貝構(gòu)造函數(shù),C+規(guī)定與類(lèi)同名的函數(shù)就是拷貝構(gòu)造函數(shù) 默認(rèn)拷貝構(gòu)造函數(shù) 在類(lèi)定義中如果沒(méi)有提供自己的拷貝構(gòu)造函數(shù),則C+提供一個(gè)默認(rèn)的構(gòu)造函數(shù),其拷貝策略是逐個(gè)成員依次拷貝。 深拷貝和淺拷貝 默認(rèn)拷貝構(gòu)造函數(shù)均是淺拷貝 但是一個(gè)類(lèi)可能擁有其它資源,如其構(gòu)造函數(shù)分配了一個(gè)堆內(nèi)存,析構(gòu)函數(shù)釋放了這個(gè)內(nèi)存,則此時(shí)就需要進(jìn)行深拷貝了 深拷貝不能依賴(lài)編譯器實(shí)現(xiàn),靜態(tài)成員與友元,靜態(tài)成員使用static 申明,在內(nèi)存中永遠(yuǎn)只有一份實(shí)例 是類(lèi)的對(duì)象所共有的 靜態(tài)成員變量可以被成員函數(shù)訪問(wèn),但靜態(tài)成員函數(shù)只能訪問(wèn)靜態(tài)成員變量 友元是為了一個(gè)普通函數(shù)直接訪問(wèn)一個(gè)類(lèi)的
4、保護(hù)甚至是私有成員的機(jī)制,組合與繼承,C + +最重要的性能之一是代碼重用 簡(jiǎn)單地創(chuàng)建一個(gè)包含已存在的類(lèi)對(duì)象的新類(lèi),這稱(chēng)為組合,has-a 關(guān)系 創(chuàng)建一個(gè)新類(lèi)作為一個(gè)已存在類(lèi)的類(lèi)型,采取這個(gè)已存在類(lèi)的形式,對(duì)它增加代碼,但不修改它。稱(chēng)為繼承,具有is-a關(guān)系,繼承具有單一繼承和多繼承,類(lèi)的應(yīng)用的特例,繼承中的向上映射與切片問(wèn)題 多繼承中發(fā)生的菱形缺陷 this跳轉(zhuǎn),繼承中的向上映射與切片問(wèn)題,如果有 class B:public A; B b; A a = b; 這就是切片現(xiàn)象 而 B *pb = new B; A *pa = pb; 則不會(huì)發(fā)生切片,因?yàn)檫@只是指針的賦值而不涉及到切片現(xiàn)象,多
5、繼承中發(fā)生的菱形缺陷,菱形缺陷導(dǎo)致的原因: 發(fā)生了菱形繼承,如右圖 兩個(gè)缺陷: 子對(duì)象重疊 向上映射的二義性 解決辦法: 修改多繼承關(guān)系為單一繼承關(guān)系或者是組合關(guān)系 進(jìn)行虛繼承,this跳轉(zhuǎn),如右圖繼承關(guān)系對(duì)于一個(gè)已經(jīng)實(shí)例化B類(lèi)的對(duì)象 bObject,永遠(yuǎn)有(B*) (Base*)(A1*) template struct iterator_traitstypedef typename I:iterator_category iterator_category typedef typename I:value_type value_type; typedef typename I:differ
6、ence_type differnce_type; typedef typename I:pointer pointer; typedef typename I:refrence refrence; ; Template struct int2type enum value = v ;,申明并不一定要定義,申明一個(gè)函數(shù),并不定義 禁止某種缺省函數(shù)的調(diào)用 申明一個(gè)函數(shù)而不實(shí)現(xiàn)可能是為了模板函數(shù)的泛化 申明一個(gè)函數(shù)可能僅僅為了獲得特殊某一項(xiàng)功能 申明一個(gè)類(lèi)而不實(shí)現(xiàn) 禁止模板類(lèi)的泛化,只允許特化 實(shí)施編譯某項(xiàng)功能的檢測(cè)如:編譯時(shí)刻斷言,模板設(shè)計(jì)的基本方法,編譯器斷言 模板特化 局部類(lèi) 常數(shù)映射型別
7、型別映射型別 型別選擇 Null class or null function 和 Empty class Type Traits 模板嵌套 Policy class,利用模板設(shè)計(jì)的方法解題,編譯時(shí)刻測(cè)試類(lèi)型的可轉(zhuǎn)換性 用到的技術(shù): 只定義不實(shí)現(xiàn) 函數(shù)多態(tài)性 可變參函數(shù) sizeof template typedef char small; class big char dummy2; static small test(U);只定義不實(shí)現(xiàn) static big test(); static T markT();/函數(shù)定義只是為了得到一個(gè)返回類(lèi)型 public; enum value = si
8、zeof(test(makT()= sizeof(Small) ; ;,STL標(biāo)準(zhǔn)模板庫(kù),容器 迭代器 算法 仿函數(shù) 配接器,容器,序列容器 vector,list、deque、stack(沒(méi)有迭代器)、queue(沒(méi)有迭代器)、即stack、queue不允許遍歷行為 關(guān)聯(lián)容器 set(標(biāo)準(zhǔn))、map(標(biāo)準(zhǔn))、hash_table、 RB-tree 通用算法 begin()、end()、size()、empty()、erase(iterator _position)、clear(),迭代器,迭代器的基本算法 迭代器型別 型別萃取,迭代器的基本算法,能夠進(jìn)行+、+、-、+=、=、= = 、!=等
9、運(yùn)算 是一種智能性指針,實(shí)現(xiàn)operator * operator -的重載 根據(jù)迭代器的特點(diǎn),迭代器又稱(chēng)循環(huán)子 迭代器前閉后開(kāi)區(qū)間 first, last),型別,單向迭代器 可逆迭代器 隨機(jī)迭代器 迭代器的繼承關(guān)系:,型別萃取,型別 value_type difference_type refrence_type pointer_type iterator_category 型別萃取機(jī) iterator_traits,算法,數(shù)值運(yùn)算 power、itoa、accumulate 基本運(yùn)算 fill、fill_n、swap、max、min、iter_swap、copy 集合運(yùn)算 set_uni
10、on、set_interseion、set_diffrence 數(shù)據(jù)整理(以循環(huán)子為參數(shù)) count、count_if、find、find_if、for_each、merge、sort、upper、search、search_n,仿函數(shù),一元仿函數(shù) 二元仿函數(shù) 二元化一元仿函數(shù) 仿函數(shù)應(yīng)用,一元仿函數(shù),template struct unary_function typedef _Arg argument_type; typedef _Result result_type; ; template struct negate:public unary_function _Tp operator
11、()(const T :,二元仿函數(shù),template struct less : public binary_function bool operator()(const _Tp,二元化一元仿函數(shù),Class binder1st binder1st(const Operation ,仿函數(shù)應(yīng)用,template inline _InputIter _find_if(_InputIter _first, _InputIter _last, Operation _op, const input_iterator_tag ,配接器,容器配接器 stack Queue 迭代配接器 Reverse I
12、terators IOStream Iterators Inert_Iterator 仿函數(shù)配接器,容器配接器,容器配接器 Stack template class stack Queue queue myQueue;,仿函數(shù)配接器,綁定 bind1st、 bind2ndop(x,param) or op(param,x) 修飾 not1、not2!op(param) or !op(param1,param2) 組合 compose1、compose2op1(op2(param);,仿函數(shù)配接器,函數(shù)配接 ptr_fun1、ptr_fun2fp(param) or fp(param1,param2) 對(duì)象配接 mem_fun、mem_fun_ref、mem_fun1、mem_fun1_ref (param-*f)() or (param.*f)() or (param-*f)(x) or (param.*f)(x),仿函數(shù)配接器,舉例 不小于 x 表達(dá)式 not1(bind2nd(less(),x) f ( g (x) ) 的表達(dá)式 Compose1(f,g) find_if( first , end, mem_fun( ,STL庫(kù)引用,標(biāo)準(zhǔn)引用辦法 #include #include using namespace std; 錯(cuò)誤引
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)烹飪(烹飪工藝創(chuàng)新)試題及答案
- 2025年中職(國(guó)土資源調(diào)查與管理)土地規(guī)劃綜合測(cè)試題及答案
- 2025年大學(xué)地理(地理研究方法)試題及答案
- 2025年高職水土保持技術(shù)(水土保持工程施工)試題及答案
- 上海市普陀區(qū)2026屆初三一模數(shù)學(xué)試題(含答案詳解)
- 上海市虹口區(qū)2026屆初三一模物理試題(含答案)
- 神奇的折疊屏技術(shù)
- 2026四川廣安市廣安區(qū)白市鎮(zhèn)人民政府選用片區(qū)紀(jì)檢監(jiān)督員1人備考題庫(kù)及1套完整答案詳解
- 2026廣西欽州市文化廣電體育和旅游局急需緊缺人才招1人備考題庫(kù)及參考答案詳解一套
- 2022-2023學(xué)年廣東深圳多校九年級(jí)上學(xué)期11月聯(lián)考數(shù)學(xué)試題含答案
- 部編版八年級(jí)上冊(cè)語(yǔ)文《期末考試卷》及答案
- 麻醉藥品、精神藥品月檢查記錄
- 醫(yī)院信訪維穩(wěn)工作計(jì)劃表格
- 蕉嶺縣幅地質(zhì)圖說(shuō)明書(shū)
- 地下車(chē)庫(kù)建筑結(jié)構(gòu)設(shè)計(jì)土木工程畢業(yè)設(shè)計(jì)
- (完整word版)人教版初中語(yǔ)文必背古詩(shī)詞(完整版)
- GB/T 2261.4-2003個(gè)人基本信息分類(lèi)與代碼第4部分:從業(yè)狀況(個(gè)人身份)代碼
- GB/T 16601.1-2017激光器和激光相關(guān)設(shè)備激光損傷閾值測(cè)試方法第1部分:定義和總則
- PDM結(jié)構(gòu)設(shè)計(jì)操作指南v1
- 投資學(xué)-課件(全)
- 幼兒園課件:大班語(yǔ)言古詩(shī)《梅花》精美
評(píng)論
0/150
提交評(píng)論