C++面向?qū)ο蟪绦蛟O(shè)計譚浩強版復(fù)習(xí)總結(jié)_第1頁
C++面向?qū)ο蟪绦蛟O(shè)計譚浩強版復(fù)習(xí)總結(jié)_第2頁
C++面向?qū)ο蟪绦蛟O(shè)計譚浩強版復(fù)習(xí)總結(jié)_第3頁
C++面向?qū)ο蟪绦蛟O(shè)計譚浩強版復(fù)習(xí)總結(jié)_第4頁
C++面向?qū)ο蟪绦蛟O(shè)計譚浩強版復(fù)習(xí)總結(jié)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、. C+ 根底endl 換行并刷新輸出流setw(n) 設(shè)置字段位數(shù)為nhe*,oct,dec 十六進制,八進制,十進制表示setfill 定義填充字符setprecision 定義浮點數(shù)的精度left,right 左對齊,右對齊showpoint 強制顯示小數(shù)點以及全部尾部0C+通過給常量命名的方式定義常量: const=用const定義的標(biāo)識符常量時,一定要對其初始化。在說明時進展初始化是對這種常量置值的唯一方法,不能用賦值運算符對這種常量進展賦值。函數(shù)聲明的一般形式為函數(shù)類型函數(shù)名參數(shù)表函數(shù)模板的定義template 函數(shù)定義例子:template T ma*(T a,T b) retu

2、rn(ab) a:b; 定義函數(shù)模板時可以使用多個類型參數(shù),每個類型參數(shù)前面只需加上關(guān)鍵字typename或class,用逗號分隔: template 例子:template T1 ma*(T1 a,T2 b) return (ab) a : (T1)b; 有默認(rèn)參數(shù)的函數(shù):實參與形參的結(jié)合是從左至右進展的,因此指定默認(rèn)值的參數(shù)必須放在形參列表中的最右端引用定義對變量起另外一個名字 (別名alias),這個名字稱為該變量的引用。 & = ;其中原變量名必須是一個已定義過的變量。如: int ma* ; int &refma*=ma*;refma*并沒有重新在存中開辟單元,只是引用ma*的單元。

3、ma*與refma*在存中占用同一地址,即同一地址兩個名字。對引用類型的變量,說明以下幾點:引用在定義的時候要初始化對引用的操作就是對被引用的變量的操作。引用類型變量的初始化值不能是一個常數(shù)。一旦引用被聲明,它就不能再指向其它的變量。5、對引用的初始化,可以用一個變量名,也可以用另一個引用。6、引用同變量一樣有地址,可以對其地址進展操作,即將其地址賦給一指針。當(dāng)&m的前面有類型符時如int &m,它必然是對引用的聲明;如果前面無類型符如cout&m,則是取變量的地址。對常量用const聲明的引用使用如下方式:int i=5;const int &a=i;聯(lián)函數(shù)定義的一般格式為:inline (

4、) 作用域運算符:a表示全局作用域中的變量a。注意:不能用:函數(shù)中的局部變量new運算從堆中分配一塊與相適應(yīng)的大小為的數(shù)組存儲空間,假設(shè)分配成功,將這塊存儲空間的起始地址存入,否則置的值為NULL空指針值,即0。new的使用格式為:=new ;delete運算符用來釋放指向的動態(tài)存儲空間。使用格式如下: delete 或 delete . 面向?qū)ο蟾靖拍蠲嫦蜻^程編程與面向?qū)ο缶幊痰膮^(qū)別:面向過程編程先確定算法,再確定數(shù)據(jù)構(gòu)造;面向?qū)ο缶幊滔却_定數(shù)據(jù)構(gòu)造,再確定運算。類定義:class : : ;假設(shè)在類體外實現(xiàn),則需要使用作用域運算符:,用它來標(biāo)識*個成員函數(shù)是屬于哪個類的,其定義格式如下:

5、 :() 類外對象中的成員可以有3種方法:通過對象名和成員運算符對象中的成員。.通過指向?qū)ο蟮闹羔樧兞繉ο笾械某蓡T。 - 通過對象的引用對象中的成員。析構(gòu)函數(shù)其定義格式如下::()在一般情況下,調(diào)用構(gòu)造函數(shù)與聲明對象的順序一樣,而調(diào)用析構(gòu)函數(shù)的次序正好與創(chuàng)立對象的順序相反。三種構(gòu)造函數(shù)Bo*(); /無參構(gòu)造函數(shù)Bo*(int h,int w ,int len):height(h),width(w),length(len) /帶參構(gòu)造函數(shù)復(fù)制構(gòu)造函數(shù)定義(); (const & )Bo*(const Bo*& b);/復(fù)制構(gòu)造函數(shù)復(fù)制構(gòu)造函數(shù)只有一個參數(shù),并且是對同類對象的引用。靜態(tài)成員是類的

6、所有對象共享的成員,而不是*個對象的成員,它在對象中不占存儲空間,是屬于整個類的成員。靜態(tài)成員定義格式如下:static;不能用參數(shù)初始化表對靜態(tài)數(shù)據(jù)成員初始化,也不能在構(gòu)造函數(shù)體初始化,靜態(tài)數(shù)據(jù)成員只能在類體外進展初始化。靜態(tài)數(shù)據(jù)成員初始化格式如下: :=;在類的成員函數(shù)中可以直接該類的靜態(tài)數(shù)據(jù)成員,而不必使用成員運算符或類名限定修飾符。在類外必須使用成員運算符或類名限定修飾符公共靜態(tài)數(shù)據(jù)成員。.:靜態(tài)成員函數(shù)就是使用static關(guān)鍵字聲明的成員函數(shù)。靜態(tài)成員函數(shù)可以直接該類的靜態(tài)成員,但不能直接類中的非靜態(tài)成員。. 第3章詳解對象對象指針就是用于存放對象數(shù)據(jù)起始地址的變量。聲明對象指針的一

7、般格式為: *;對象指針的初始化一般格式為: *=&;=&;通過指針對象成員一般格式如下: - bo*p-volumn();(*). (*bo*p).volumn();this指針是一個特殊的隱含指針,它隱含于每一個成員函數(shù)靜態(tài)成員函數(shù)除外中,也就是說,每個成員函數(shù)都有一個this指針參數(shù)。this指針指向調(diào)用該函數(shù)的對象,即this指針的值是當(dāng)前被調(diào)用的成員函數(shù)所在的對象的起始地址。復(fù)制構(gòu)造函數(shù)中隱含使用this指針:TAdd(const TAdd& p) this-*=p.*; this-y=p.y; coutcopy constructor.* (*this).*this指針是一個con

8、st指針,成員函數(shù)不能對其進展賦值。靜態(tài)成員中不能this指針,因為靜態(tài)成員函數(shù)不附屬于任何對象。指向非靜態(tài)數(shù)據(jù)成員的指針一般形式為:數(shù)據(jù)類型名 *指針變量名;定義指向公有成員函數(shù)的指針變量的一般形式為:數(shù)據(jù)類型名 (類名: *指針變量名)(參數(shù)列表);使指針變量指向一個公有成員函數(shù)的一般形式為:指針變量名=&類名:成員函數(shù)名常量定義格式如下:const =;常對象是其數(shù)據(jù)成員值在對象的整個生存期間不能被改變的對象。const (); const ();常成員函數(shù)通過常成員函數(shù)來引用本類中的常數(shù)據(jù)成員。 ()const;聲明一維對象數(shù)組的一般格式為: . 第4章運算符重載重載為類的成員函數(shù)格式

9、如下: operator ()函數(shù)體A operator + (A &);+為前置運算符時,它的運算符重載函數(shù)的一般格式為: operator +( )+為后置運算符時,它的運算符重載函數(shù)的一般格式為: operator +(int)運算符重載函數(shù)不能定義為靜態(tài)的成員函數(shù),因為靜態(tài)的成員函數(shù)中沒有this指針。友元聲明以關(guān)鍵字friend開場,只能出現(xiàn)在被類的定義中。具體格式如下:friend ();friend class ; 友元函數(shù)可以該類中的所有成員公有的、私有的和保護的通常使用友元函數(shù)來取對象中的數(shù)據(jù)成員值,而不修改對象中的成員值,保證數(shù)據(jù)平安。重載為類的友元函數(shù)語法形式friend

10、 operator () ; +為前置運算符時,它的運算符重載函數(shù)的一般格式為:A operator +(A &a)+為后置運算符時,它的運算符重載函數(shù)的一般格式為:A operator +(A &a, int)重載提取運算符的一般格式為:friend istream & operater (istream &, ClassName &);istream & operater (istream &is, ClassName &f)重載輸出插入運算符的一般格式為:friend ostream & operater (ostream &, ClassName &);ostream & operat

11、er (ostream &is, ClassName &f)重載類型轉(zhuǎn)換運算符函數(shù)格式:operator返回根本類型名 return 根本類型值類類型轉(zhuǎn)換函數(shù)只能是成員函數(shù),不能是友元函數(shù)。轉(zhuǎn)換函數(shù)的操作數(shù)是對象。. 第5章繼承與派生派生是指由基類創(chuàng)立新類的過程。class A int i; /基類成員 ;class B:public A /A派生了B,B繼承了A, /B自動擁有A的成員 int j; /定義派生類的新成員 ;派生類的定義格式如下:class : ;派生類繼承了基類的全部數(shù)據(jù)成員和除了構(gòu)造、析構(gòu)函數(shù)之外的全部成員函數(shù),它們在派生類中的屬性由繼承方式控制。三種繼承方式下派生類中基

12、類成員的控制權(quán)限無論是哪種繼承方式,基類的私有成員在派生類中都是不可被的。只能通過基類的成員函數(shù)基類的私有數(shù)據(jù)成員。解決的方法是通過成員初始化表來完成,在成員初始化表中可以顯式調(diào)用基類構(gòu)造函數(shù)。():(),();構(gòu)造函數(shù)調(diào)用順序為:基類的構(gòu)造函數(shù)對象成員構(gòu)造函數(shù)派生類的構(gòu)造函數(shù)。析構(gòu)函數(shù)調(diào)用順序剛好相反。. 當(dāng)基類中沒有顯式定義構(gòu)造函數(shù),或定義了無參構(gòu)造函數(shù)時,派生類構(gòu)造函數(shù)的初始化表可以省略對基類構(gòu)造函數(shù)的調(diào)用,而采用隱含調(diào)用。當(dāng)基類的構(gòu)造函數(shù)使用一個或多個參數(shù)時,派生類必須定義構(gòu)造函數(shù),提供將參數(shù)傳遞給基類構(gòu)造函數(shù)的途徑。這時,派生類構(gòu)造函數(shù)的函數(shù)體可能為空,僅起到參數(shù)傳遞作用。如果在基類

13、中既定義了無參構(gòu)造函數(shù),又定義了帶參構(gòu)造函數(shù),則在定義派生類構(gòu)造函數(shù)時,既可以包含基類構(gòu)造函數(shù)和參數(shù),也可以不包含基類構(gòu)造函數(shù)。如果在一個派生類中要基類中的私有成員,可以將這個派生類聲明為基類的友元。友元關(guān)系是不能繼承的。B類是A類的友元,C類是B類的派生類,則C類和A類之間沒有任何友元關(guān)系,除非C類聲明A類是友元。多繼承派生類的定義class : , ;多繼承派生類的構(gòu)造函數(shù)():(), () ;必須包含完成所有基類初始化所需的參數(shù)構(gòu)造函數(shù)調(diào)用順序是:先調(diào)用所有基類的構(gòu)造函數(shù),再調(diào)用對象成員類構(gòu)造函數(shù),最后調(diào)用派生類的構(gòu)造函數(shù)。處于同一層次的各基類構(gòu)造函數(shù)的調(diào)用順序取決于定義派生類時所指定的

14、基類順序,與派生類構(gòu)造函數(shù)中所定義的成員初始化列表順序無關(guān)。如果有多個成員類對象,則構(gòu)造函數(shù)的調(diào)用順序是對象在類中被聲明的順序,而不是它們出現(xiàn)在成員初始化表中的順序。析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)的調(diào)用順序相反。虛基類虛基類的定義格式為: class :virtual ;【說明】引進虛基類后,派生類對象中只存在一個虛基類成員的副本。虛基類的初始化與一般多繼承的初始化在語法上一樣,但構(gòu)造函數(shù)的調(diào)用順序有所不同,規(guī)則如下:先調(diào)用虛基類的構(gòu)造函數(shù),再調(diào)用非虛基類的構(gòu)造函數(shù)。假設(shè)同一層次中包含多個虛基類,其調(diào)用順序為定義時的順序。假設(shè)虛基類由非虛基類派生而來,則仍按先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類構(gòu)造函

15、數(shù)的順序。如果在虛基類中定義了帶參數(shù)的構(gòu)造函數(shù),則要在其所有派生類包括直接派生類或間接派生類中,通過構(gòu)造函數(shù)的初始化表對虛基類進展初始化。. 多態(tài)性與虛函數(shù)類型兼容規(guī)則類型兼容規(guī)則是指在需要基類對象的任何地方,都可以使用公有派生類的對象來替代。類型兼容規(guī)則中所指的替代包括以下情況:派生類的對象可以賦值給基類的對象。派生類的對象可以初始化基類的引用。派生類的對象的地址可以賦值給基類的指針變量。在替代之后,派生類對象就可以作為基類的對象使用,但只能從基類繼承的成員。只能用派生類對象對其基類對象賦值,而不能用基類對象對其派生類對象賦值。同一基類的不同派生類對象之間也不能賦值。虛函數(shù)虛函數(shù)就是在基類中

16、被關(guān)鍵字virtual說明、并在一個或多個派生類中被重新定義的成員函數(shù)。聲明虛函數(shù)的格式如下:virtual ();在派生類中重新定義虛函數(shù)時,其函數(shù)原型包括返回類型、函數(shù)名、參數(shù)個數(shù)、類型和順序,都必須與基類中的原型一樣。一個函數(shù)一旦被聲明為虛函數(shù),則無論聲明它的類被繼承了多少層,在每一層派生類中該函數(shù)都保持虛函數(shù)特性。因此,在派生類中重新定義該函數(shù)時,可以省略關(guān)鍵字virtual。實現(xiàn)動態(tài)的多態(tài)性時,必須使用基類類型的指針變量或?qū)ο笠?,并使其指向不同的派生類對象,并通過調(diào)用指針或引用所指向的虛函數(shù)才能實現(xiàn)動態(tài)的多態(tài)性。可將類簇中具有共性的成員函數(shù)聲明為虛函數(shù),而具有個性的函數(shù)沒有必要聲明

17、為虛函數(shù)。但是下面的情況例外:靜態(tài)成員函數(shù)不能聲明為虛函數(shù)。構(gòu)造函數(shù)不能是虛函數(shù)。聯(lián)成員函數(shù)不能聲明為虛函數(shù)。析構(gòu)函數(shù)可以是虛函數(shù)。虛析構(gòu)函數(shù)虛析構(gòu)函數(shù)的聲明格式如下: virtual ();如果一個類的析構(gòu)函數(shù)是虛函數(shù),則,由它派生的所有子類的析構(gòu)函數(shù)也是虛函數(shù)。純虛函數(shù)用virtual聲明,沒有任何實現(xiàn)、必須由派生類覆蓋該函數(shù)提供實現(xiàn)純虛函數(shù)的聲明格式為: virtual ()=0;包含一個或多個純虛函數(shù)的類稱為抽象類。如果派生類沒有實現(xiàn)基類中的所有純虛函數(shù),派生類也是抽象類。抽象類無法實例化,即不能創(chuàng)立抽象類的對象。. 輸入輸出iostream:I/O流類庫的最主要的頭文件,包含了對輸入

18、輸出流進展操作所需的根本信息,還包括cin、cout、cerr和clog共4個流對象。fstream:用于用戶管理的文件的I/O操作。strstream:用于字符串流I/O。stdiostream:用于混合使用C和C+的I/O操作。iomanip:使用格式化I/O時應(yīng)包含此頭文件。用setf函數(shù)設(shè)置狀態(tài)標(biāo)志,其一般格式如下:long ios:setf(long flags)去除狀態(tài)標(biāo)志用unsetf函數(shù)去除狀態(tài)標(biāo)志,其一般格式如下:long ios:unsetf(long flags)用函數(shù)flags取狀態(tài)標(biāo)志有兩種形式,其格式分別如下:long ios:flags()/返回與流相關(guān)的當(dāng)前狀態(tài)

19、標(biāo)志值long ios:flags(long flag)/將流的狀態(tài)標(biāo)志值設(shè)置為flag,并返回設(shè)置前的狀態(tài)標(biāo)志值。以上三組函數(shù)必須用流類對象cin或cout來調(diào)用,其格式如下:.(ios:)cout.setf(ios:showpos);cout.setf(ios:scientific);cout.setf(ios:showpos| ios:scientific);設(shè)置輸出寬度函數(shù)有兩種形式,其格式分別如下: int ios:width(int len) int ios:width()第一種形式是設(shè)置輸出寬度,并返回原來的輸出寬度;第二種形式是返回當(dāng)前輸出寬度,默認(rèn)輸出寬度為0。只對其后的第一

20、個輸出項有效。填充字符的作用是當(dāng)輸出值不滿輸出寬度時用填充字符來填充,默認(rèn)填充字符為空格。它與width()函數(shù)配合使用,否則沒有意義。設(shè)置填充字符函數(shù)有兩種形式,其格式分別如下: char ios:fill(char ch) char ios:fill()第一種形式是重新設(shè)置填充字符,并返回設(shè)置前的填充字符;第二種形式是返回當(dāng)前的填充字符。設(shè)置浮點數(shù)輸出精度有兩種形式,其格式分別如下: int ios:precision(int p) int ios:precision()第一種形式是重新設(shè)置輸出精度,并返回設(shè)置前的輸出精度;第二種形式是返回當(dāng)前的輸出精度。默認(rèn)輸出精度為6 用get函數(shù)讀入

21、一個字符(1)不帶參數(shù)的get函數(shù)cin.get()用來從指定的輸入流中提取一個字符包括空白字符,函數(shù)的返回值就是讀入的字符。假設(shè)遇到輸入流中的文件完畢符,則函數(shù)返回文件完畢標(biāo)志EOF。(2)有一個參數(shù)的get函數(shù)cin.get(ch)用來從輸入流中讀取一個字符,賦給字符變量ch。讀取成功返回非0值真,如失敗遇文件完畢符則函數(shù)返回0值假。3)有三個參數(shù)的get函數(shù)cin.get(字符數(shù)組/字符指針,字符個數(shù)n,終止字符)從輸入流中讀取n-1個字符,賦給指定的字符數(shù)組或字符指針指向的數(shù)組。如果在讀取n-1個字符之前遇到指定的終止字符,則提前讀取完畢。如果讀取成功返回非0值真,如失敗遇文件完畢符則

22、函數(shù)返回0值假。用getline函數(shù)讀入一行字符cin.getline(字符數(shù)組或字符指針,字符個數(shù)n,終止字符)從輸入流中讀取一行字符,其用法與帶3個參數(shù)的get函數(shù)類似。eof函數(shù)無參函數(shù),表示文件完畢。從輸入流讀取數(shù)據(jù),如果到達文件末尾遇文件完畢符,返回非零值真,否則為0假。 while!cin.eofpeek函數(shù)無參函數(shù),表示觀察,觀測下一個字符。返回值是當(dāng)前指針指向的當(dāng)前字符,但只是觀測,指針仍停留在當(dāng)前位置,并不后移。如果要的字符是文件完畢符,則函數(shù)值是EOF。 c=cin.peek;putback函數(shù)將前面用get或getline函數(shù)從輸入流中讀取的字符ch返回到輸入流,插入到當(dāng)前指針位置,以供后面讀取??刂品粚儆谌魏晤惓蓡T,定義在iomanip頭文件中設(shè)置輸入/輸出寬度setw(int)用整型參數(shù)來制定輸入/輸出域的寬度。使用時只對其后一項輸入/輸出有效。當(dāng)用于輸出時,假設(shè)實際寬度小于設(shè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論