C++的面向?qū)ο蠡A(chǔ)知識(shí)課件_第1頁(yè)
C++的面向?qū)ο蠡A(chǔ)知識(shí)課件_第2頁(yè)
C++的面向?qū)ο蠡A(chǔ)知識(shí)課件_第3頁(yè)
C++的面向?qū)ο蠡A(chǔ)知識(shí)課件_第4頁(yè)
C++的面向?qū)ο蠡A(chǔ)知識(shí)課件_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C++的面向?qū)ο蠡A(chǔ)知識(shí)

11.1傳統(tǒng)的程序設(shè)計(jì)方法

一.程序設(shè)計(jì)方法的進(jìn)步

在20世紀(jì)60年代,軟件曾出現(xiàn)過(guò)嚴(yán)重危機(jī),由軟件錯(cuò)誤而引起的信息丟失、系統(tǒng)報(bào)廢事件屢有發(fā)生。為此1968年,荷蘭學(xué)者提出了程序設(shè)計(jì)中常用的GOTO語(yǔ)句的三大危害:破壞了程序的靜動(dòng)一致性;程序不易測(cè)試;限制代碼化。此舉引起了軟件界長(zhǎng)達(dá)數(shù)年的論戰(zhàn),并由此產(chǎn)生了結(jié)構(gòu)化程設(shè)計(jì)方法,同時(shí)誕生了基于這一設(shè)計(jì)方法的程序設(shè)計(jì)Pascal.Pascal一經(jīng)推出,它的簡(jiǎn)潔明了以及豐富的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu),為程序員提供了極大的方便性與靈活性,同時(shí)它特別適合計(jì)算機(jī)系統(tǒng),因此大受歡迎。結(jié)構(gòu)化程序設(shè)計(jì)思想在整個(gè)20世紀(jì)70的軟件開(kāi)發(fā)中占絕對(duì)統(tǒng)治地位。二.什么是結(jié)構(gòu)化程序設(shè)計(jì)(StructureProgramming)

結(jié)構(gòu)化程序設(shè)計(jì)是上個(gè)世紀(jì)60年代誕生的,在70年代到80年代已遍及全球,結(jié)構(gòu)化程序設(shè)計(jì)的設(shè)計(jì)思路是:自頂向下、逐步求精;其程序結(jié)構(gòu)是按功能劃分若干個(gè)基本模塊,這些模塊形成一個(gè)樹(shù)狀結(jié)構(gòu);各模塊之間的關(guān)系盡可能簡(jiǎn)單,在功能上相對(duì)獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成;結(jié)構(gòu)化程序設(shè)計(jì)方法的四條原則是:1.自頂向下;2.逐步求精;3.模塊化;4.限制使用goto語(yǔ)句。

當(dāng)數(shù)據(jù)和過(guò)程相互獨(dú)立時(shí),總存在著用錯(cuò)誤的數(shù)據(jù)調(diào)用正確的程序模塊或用正確的數(shù)據(jù)調(diào)用了錯(cuò)誤的程序模塊的可能性。因此,要使數(shù)據(jù)與程序始終保持相容,已經(jīng)成為程序員的一個(gè)沉重負(fù)擔(dān)。上述這些問(wèn)題,結(jié)構(gòu)化程序設(shè)計(jì)方法本身是解決不了的,到了70年代末期,結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言和結(jié)構(gòu)化分析與設(shè)計(jì)已無(wú)法滿足用戶需求的變化,于是面向?qū)ο蠹夹g(shù)開(kāi)始浮出水面。11.1.2面向?qū)ο蟮某绦蛟O(shè)計(jì)方法

一.面向?qū)ο蟮挠蓙?lái)和發(fā)展

面向?qū)ο蠓椒ㄆ鹪从诿嫦驅(qū)ο笳Z(yǔ)言,編程語(yǔ)言得到應(yīng)用和發(fā)展的同時(shí),面向?qū)ο蟮姆椒ǖ玫搅税l(fā)展。和任何事物一樣,面向?qū)ο笳Z(yǔ)言也經(jīng)歷了它的發(fā)生、發(fā)展階段,走向成熟。1.在60年代初期,Algo語(yǔ)言使封裝思想誕生。2.在60年代后期,Simula引入對(duì)象和消息機(jī)制,對(duì)象和對(duì)象之間可以通過(guò)發(fā)送消息來(lái)進(jìn)行相互通信,這就是導(dǎo)致了數(shù)據(jù)封裝與通信思想的產(chǎn)生。

3.到了70年代,都許多語(yǔ)言如CLU、Ads、Modula-2等都開(kāi)始支持?jǐn)?shù)據(jù)與封裝,這導(dǎo)致了抽象數(shù)據(jù)類(lèi)型發(fā)展。4.1980年,出現(xiàn)Smalltalk-80商品化的面向?qū)ο笳Z(yǔ)言,它是純粹的面向?qū)ο缶幊陶Z(yǔ)言。5.80年代中期到90年代,出現(xiàn)了大批面向?qū)ο笳Z(yǔ)言,面向?qū)ο笳Z(yǔ)言趨于成熟,從此面向?qū)ο蠓椒ㄗ呦驅(qū)嵱?。二.面向?qū)ο蟮幕舅枷?/p>

其基本思想是使用對(duì)象、類(lèi)、繼承、封裝、消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類(lèi)的自然思維方式。三.面向?qū)ο蟮幕靖拍?/p>

1.對(duì)象:特性+行為

第一個(gè)面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言是60年代開(kāi)發(fā)的Simula—67。其目的是為了解決模擬問(wèn)題。典型的模擬問(wèn)題是銀行出納業(yè)務(wù),包括出納部門(mén)、顧客、業(yè)務(wù)、貨幣的單位等大量的“對(duì)象”。把那些在程序執(zhí)行期間除了狀態(tài)之外其他方面都一樣的對(duì)象歸在一起,構(gòu)成對(duì)象的“類(lèi)”,這就是“類(lèi)”一詞的來(lái)源。類(lèi)描述了一組有相同特性(數(shù)據(jù)元素)和相同行為(函數(shù))的對(duì)象。2.繼承:類(lèi)型關(guān)系

特殊類(lèi)的對(duì)象擁有其一般類(lèi)的全部屬性與服務(wù),稱(chēng)作特殊類(lèi)對(duì)一般類(lèi)的繼承。一個(gè)類(lèi)可以是多個(gè)一般類(lèi)的特殊類(lèi),它從多個(gè)一般類(lèi)中繼承了屬性與服務(wù),這稱(chēng)為多繼承。例如,客輪是輪船和客運(yùn)工具的特殊類(lèi)。在java語(yǔ)言中,通常我們稱(chēng)一般類(lèi)為父類(lèi),特殊類(lèi)為子類(lèi)。3.封裝性

封裝性就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的相同單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),包含兩個(gè)含義:把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象)。信息隱蔽,即盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界,只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。4.多態(tài)性

對(duì)象的多態(tài)性是指在一般類(lèi)中定義的屬性或服務(wù)被特殊類(lèi)繼承之后,可以具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為。11.2C++對(duì)C的擴(kuò)充

11.2.1C++語(yǔ)言源程序的編譯

為了解C++語(yǔ)言源程序的編譯過(guò)程首先介紹一些基本術(shù)語(yǔ):

1.源程序:用源語(yǔ)言寫(xiě)的有待翻譯的程序,稱(chēng)為“源程序”。源程序可以是匯編語(yǔ)言,也可以是高級(jí)程序設(shè)計(jì)語(yǔ)言,所以用它們寫(xiě)出的程序都是源程序。

2.目標(biāo)程序:是源程序通過(guò)翻譯加工以后所生成的程序。目標(biāo)程序可以用機(jī)器語(yǔ)言表示,也可以用匯編語(yǔ)言或其他中間語(yǔ)言表示。

3.翻譯程序:是指用來(lái)把源程序翻譯為目標(biāo)程序的程序。對(duì)翻譯程序來(lái)說(shuō),源程序是它的輸入,而目標(biāo)程序則是其輸出。11.2.2基本數(shù)據(jù)類(lèi)型

1.C++類(lèi)型分類(lèi)C++的數(shù)據(jù)類(lèi)型有基本數(shù)據(jù)類(lèi)型和非基本數(shù)據(jù)類(lèi)型。基本數(shù)據(jù)類(lèi)型是C++內(nèi)部預(yù)先定義的數(shù)據(jù)類(lèi)型。主要有整型、字符型、實(shí)型、布爾型這四種基本類(lèi)型。非基本數(shù)據(jù)類(lèi)型包括指針、數(shù)組、結(jié)構(gòu)、類(lèi)等。2.整型標(biāo)準(zhǔn)C++中6種整型short、int、long、unsignedshort、unsignedint、unsignedlong。以在十六位計(jì)算機(jī)中表示為例它們的范圍如下表11.2-1:類(lèi)型說(shuō)明長(zhǎng)度(字節(jié))范圍short短整型2-32768~32767int整型2-32768~32767llong長(zhǎng)整型4-2147483648~2147483647unsignedshort無(wú)符號(hào)短整型20~65535unsignedint無(wú)符號(hào)整型20~65535unsignedlong無(wú)符號(hào)長(zhǎng)整型40~42949672953.字符型字符文字由單引號(hào)‘限定,字符值以整型的方式存儲(chǔ)。【例11.1】字符變量intmain(){//打印字符和已在內(nèi)部存儲(chǔ)的整型值charc=ˊAˊ;cout<<"c="<<c<<",int(c)="<<int(c)<<endl;c=ˊtˊ;cout<<"c="<<c<<",int(c)="<<int(c)<<endl;}運(yùn)行結(jié)果:c=A,int(c)=65c=t,int(c)=116由于字符值被用于輸入和輸出,因此它們表現(xiàn)為字符的形式而不是整型的形式:字符A是以字母A的形式而不是以它的內(nèi)部表示的整數(shù)值65的形式被打印出來(lái)。程序中用類(lèi)型轉(zhuǎn)換運(yùn)算符int()將其內(nèi)部對(duì)應(yīng)的整型值展示出來(lái)。這就是字母的ASCII碼。字符型的范圍如下表11.2-2:類(lèi)型說(shuō)明長(zhǎng)度(字節(jié))范圍char字符型1-128~127unsignedchar無(wú)符號(hào)字符型10~2554.實(shí)型C++支持3種實(shí)數(shù)型:float、double、longdouble。在大多數(shù)系統(tǒng)中,double使用float兩倍的字節(jié)數(shù)。典型的是float使用4字節(jié),double使用8字節(jié),longdouble使用8、10、12或16字節(jié)。實(shí)型的范圍如下表11.2-3:類(lèi)型說(shuō)明長(zhǎng)度(字節(jié))float浮點(diǎn)型4double雙精度型8Longdouble長(zhǎng)雙精度型105.布爾型

布爾型變量只能取兩個(gè)值:false和true。這兩個(gè)值被存為0和1。標(biāo)準(zhǔn)C++中,布爾型被稱(chēng)為bool?!纠?1.3】布爾類(lèi)型變量

intmain(){//打印布爾變量的值

boolflag=false;

cout<<"flag="<<flag<<endl;

flag=true;

cout<<"flag="<<flag<<endl;

}運(yùn)行結(jié)果:flag=0flag=1注意false值被打印成整數(shù)0而true值被打印成整數(shù)1。6.?dāng)?shù)據(jù)類(lèi)型轉(zhuǎn)換c++中數(shù)據(jù)類(lèi)型轉(zhuǎn)換有兩種,即隱式類(lèi)型轉(zhuǎn)換和顯式類(lèi)型轉(zhuǎn)換。隱式類(lèi)型轉(zhuǎn)換由編譯器自動(dòng)完成,當(dāng)編譯器遇到不同類(lèi)型的數(shù)據(jù)參與同一運(yùn)算時(shí),會(huì)自動(dòng)將它們轉(zhuǎn)換成相同類(lèi)型后在進(jìn)行運(yùn)算。隱式類(lèi)型轉(zhuǎn)換按從低到高的順序進(jìn)行。顯式類(lèi)型轉(zhuǎn)換它是程序員顯式指出的類(lèi)型轉(zhuǎn)換,轉(zhuǎn)換形式有兩種:〈類(lèi)型名〉(表達(dá)式)(〈類(lèi)型名〉)表達(dá)式通過(guò)類(lèi)型的顯式轉(zhuǎn)換可以將“表達(dá)式”轉(zhuǎn)換成適當(dāng)?shù)念?lèi)型。11.2.3變量的定義

變量名要遵守以下規(guī)則:1)不能是C++保留字。

2)第一個(gè)字符必須是字母或下劃線。

3)中間不能有空格。

變量就是值可變的量,每個(gè)變量由一個(gè)變量名唯一標(biāo)識(shí),同時(shí),每個(gè)變量又具有一個(gè)特定的數(shù)據(jù)類(lèi)型。類(lèi)型標(biāo)志著這個(gè)變量將來(lái)的用法以及它將保存哪種類(lèi)型的數(shù)據(jù)值。命名變量名

可以在一個(gè)語(yǔ)句里建立多個(gè)同一類(lèi)型的變量,方法是在類(lèi)型后寫(xiě)上多個(gè)變量名,中間用逗開(kāi)。例如:

unsignedmyage,myweight;

longarea,width,length;

在同一語(yǔ)句里不能混合定義不同類(lèi)型的變量

3.變量賦值與初始化

用賦值運(yùn)算符“=”給變量賦值。例如:intdepth;depth=5;也可在定義時(shí)直接給變量賦值。在定義的同時(shí),賦給變量一個(gè)初始值,稱(chēng)為變量的初始化。例如:intdepth=5;//初始化

在定義時(shí)也可以初始化多個(gè)變量。例如:intdepth=5,length=6;不是所有的變量在定義時(shí)都需要初始化。例如:doublearea,radius=15;該變量定義并不是將15同時(shí)賦給這兩個(gè)變量,而是變量radius初始化為15,area只是定義,沒(méi)有被初始化。4.用typedef定義自己的變量類(lèi)型

在C++中可以利用typedef定義自己的變量類(lèi)型,其形式為:typedef〈類(lèi)型說(shuō)明〉;〈類(lèi)型說(shuō)明〉類(lèi)似于變量說(shuō)明,只是變量名用類(lèi)型名代替了,實(shí)際上,這等于定義了一個(gè)同義詞,這種方式與創(chuàng)建一個(gè)新的類(lèi)型是不同的。Typedef沒(méi)有實(shí)際地定義一個(gè)新的數(shù)據(jù)類(lèi)型,在建立一個(gè)typedef類(lèi)型時(shí)沒(méi)有分配內(nèi)存空間。例如:

typedef

intdepth;

typedefcharstring[8];

使用自定義類(lèi)型有幾點(diǎn)好處:一是可以更好地表達(dá)程序員的意思,如用depth來(lái)表示將要定義的標(biāo)識(shí)符是屬于深度一類(lèi)的數(shù)據(jù),用string表示程序員想要定義的是一個(gè)字符串,這比直接用系統(tǒng)預(yù)定義的類(lèi)型清晰得多;二是簡(jiǎn)單方便,一些數(shù)據(jù)類(lèi)型可以用簡(jiǎn)單的類(lèi)型標(biāo)識(shí)符來(lái)表示,不用每次都麻煩地寫(xiě)復(fù)雜的定義。1.4.4C++的函數(shù)原型

函數(shù)原型是一條程序語(yǔ)句,它由函數(shù)返回類(lèi)型﹑函數(shù)名和參數(shù)表構(gòu)成,形式為:返回類(lèi)型函數(shù)名(參數(shù)表);在C++中,函數(shù)聲明就是函數(shù)原型。在C++中,函數(shù)的聲明可以在主程序以前,也可以在主程序之後。程序:使用函數(shù)C++版本(函數(shù)的聲明在主程序以前)如果函數(shù)在主程序之后聲明,在主程序以前必須有一個(gè)叫做函數(shù)原型的語(yǔ)句。函數(shù)原型告訴C++編譯程序參數(shù)的數(shù)據(jù)類(lèi)型、參數(shù)的數(shù)目及函數(shù)回傳的數(shù)據(jù)類(lèi)型,這些資料必須和函數(shù)的聲明一致。在數(shù)據(jù)原型中,參數(shù)名稱(chēng)是不需要的,就算有也不一定要和函數(shù)聲明的一樣。例如,函數(shù)原型

floatpower(floatbase,intn);

可以寫(xiě)成

floatpower(float,int);

11.2.5常量說(shuō)明

一.常類(lèi)型const

常數(shù)型是指使用類(lèi)型修飾符const說(shuō)明的類(lèi)型,常類(lèi)型的變量或?qū)ο蟮闹凳遣荒鼙桓碌?。因此,定義或說(shuō)明常類(lèi)型時(shí)必須進(jìn)行初始化.

二.常量分類(lèi)

1.一般常量

2.常對(duì)象

3.常指針1.一般常量一般常量是指簡(jiǎn)單類(lèi)型的常量。

定義或說(shuō)明一個(gè)常數(shù)組可采用如下格式:

<類(lèi)型說(shuō)明符>

const

<數(shù)組名>[大小]或者const

<類(lèi)型說(shuō)明符>

<數(shù)組名>[大小]例如:int

const

a[5]={1,2,3,4,5};2.常對(duì)象

常對(duì)象是指對(duì)象常量,定義格式如下:<類(lèi)名>

const

<對(duì)象名>或者const

<類(lèi)名>

<對(duì)象名>

定義常對(duì)象時(shí),同樣要進(jìn)行初始化,并且該對(duì)象不能再被更新,修飾符const可以放在類(lèi)名后面,也可以放在類(lèi)名前面.

3.常指針

下面定義的一個(gè)指向字符串的常量指針:char

*

const

prt1

=stringprt1;其中,ptr1是一個(gè)常量指針.下面賦值是非法的:ptr1=stringprt2;而下面的賦值是合法的:*ptr1="m";因?yàn)橹羔榩tr1所指向的變量是可以更新的,不可更新的是常量指針ptr1所指的方向(別的字符串).11.2.6C++的注釋語(yǔ)句一.什么是注釋注釋是程序員為讀者作的說(shuō)明,是提高程序可讀性的一種手段.一般可將其分為兩種:序言注釋和注解性注釋?zhuān)罢哂糜诔绦蜷_(kāi)頭,說(shuō)明程序或文件的名稱(chēng),用途,編寫(xiě)時(shí)間,編寫(xiě)人及輸入輸出說(shuō)明等,后者用于程序中難懂的地方.二.二.注釋的書(shū)寫(xiě)

1.C++風(fēng)格的注釋為"//"之后的內(nèi)容,直到換行.注釋僅供閱讀程序使用,是程序的可選部分.在生成可執(zhí)行程序之前,C++忽略注釋?zhuān)衙總€(gè)注釋都視為一個(gè)空格.2.另外,C++還兼容了C語(yǔ)言風(fēng)格的注釋?zhuān)侵阜?hào)"/*"與"*/"之間的任何字符串,這些字符可以跨過(guò)多行.

11.2.7C++的標(biāo)準(zhǔn)I/O操作

所有用到標(biāo)準(zhǔn)輸入輸出的C++程序都必須包含iostream這個(gè)預(yù)處理偽指令.標(biāo)識(shí)符iostream是標(biāo)準(zhǔn)C++庫(kù)中一個(gè)文件的名字.格式為:include<iostream.h>.

iostream.h是系統(tǒng)定義的一個(gè)頭文件,它設(shè)置了C++的I/O相關(guān)環(huán)境,定義輸入輸出流對(duì)象cout與cin等.

一.輸出

二.輸入

一.輸出:C++還提供了一些操縱符,可以直接嵌入到輸入/輸出語(yǔ)句中來(lái)實(shí)現(xiàn)I/O格式控制.在使用setprecision和setw操縱符時(shí)要在程序開(kāi)頭包含iomanip.h.

操縱符名含義

dec

數(shù)值數(shù)據(jù)采用十進(jìn)制表示

hex

數(shù)值數(shù)據(jù)采用十六進(jìn)制表示

oct

數(shù)值數(shù)據(jù)采用十進(jìn)制表示

ws

提取空白字符

endl

插入換行符,并刷新流

ends插入空字符setprecision(int)

設(shè)置浮點(diǎn)數(shù)的小數(shù)位數(shù)(包括小數(shù)點(diǎn))

setw(int)

設(shè)置域?qū)?/p>

1.

輸出常數(shù)用cout可以顯示數(shù)字和字符,可以輸出常數(shù).例.#include<iostream.h>voidmain(){intn=50;floatf=20.3;

cout<<"n="<<n<<endl;

cout<<"f="<<f<<endl;}

運(yùn)行結(jié)果為:

n=0f=20.3000三個(gè)常用的控制符是hex,oct和dec,它們分別對(duì)應(yīng)16進(jìn)制數(shù),8進(jìn)制數(shù)和十進(jìn)制數(shù)的顯示.這三個(gè)控制符在iostream.h頭文件中定義.

#include<iostream.h>voidmain(){intnumber=1001;

cout<<"decimal:"<<dec<<number<<endl<<"hexadecimal:"<<hex<<number<<endl<<"octal:"<<oct<<number<<endl;}

運(yùn)行結(jié)果為:

decimal:1001hexadecimal:3e9octal:1751

2.輸出八進(jìn)制和十六進(jìn)制數(shù)

3.設(shè)置值的輸出寬度

除了使用空格來(lái)強(qiáng)行控制輸出間隔外,還可以用setw(n)控制符.如果一個(gè)值需要比setw(n)確定的字符數(shù)更多的字符,則該值將使用它所需要的所有字符.例.Floatamount=3.14159;

cout<<setw(4)<<amount<<endl;

其運(yùn)行結(jié)果為:3.14159.它并不按4位寬度,而是按實(shí)際寬度輸出.如果一個(gè)值的字符數(shù)比setw(n)確定的字符數(shù)個(gè)數(shù)更少,則在數(shù)字字符前顯示空白.不同于其他控制符,setw(n)僅僅影響下一個(gè)數(shù)值輸出,換句話說(shuō),使用setw設(shè)置的間隔方式并不保留其效力.4.控制浮點(diǎn)數(shù)值顯示使用setprecision(n)可控制輸出流顯示浮點(diǎn)數(shù)的數(shù)字個(gè)數(shù).C++默認(rèn)的流輸出數(shù)值有效位為6.二.輸入

當(dāng)程序需要執(zhí)行從鍵盤(pán)輸入時(shí),可以使用抽取操作符">>"從cin輸入流中抽取字符.例.Int

myage;cin>>myage;

不管把什么基本數(shù)據(jù)類(lèi)型的名字或值傳給流,它都能懂.Cin可以調(diào)整行,自動(dòng)識(shí)別變量位置和類(lèi)型.它能夠知道抽取變量的類(lèi)型.

11.2.8函數(shù)參數(shù)的缺省在C++中函數(shù)可以使用缺省參數(shù),例:voidPutHzxy(char*str,intx=-1,inty=-1){if(x==-1)x=wherex();if(y==-1)y=wherey();

moveto(x,y)

PutHz(str);}

可以有兩種方式調(diào)用函數(shù)PutHzxy(),例如:

PutHzxy("C++語(yǔ)言");//使用缺省參數(shù),在當(dāng)前位置輸出

PutHzxy("C++語(yǔ)言",10,10);//沒(méi)有使用缺省參數(shù)

11.3C++程序結(jié)構(gòu)

我們從最簡(jiǎn)單的程序例子來(lái)分析C++的程序組成。例:下面是一個(gè)完整的輸出程序。

#include<iostream.h>voidmain(){cout<<"hello,world!"<<endl;}

運(yùn)行結(jié)果為:hello,world!C++的程序結(jié)構(gòu)由注釋?zhuān)幾g預(yù)處理和程序主體組成.

一.注釋注釋是程序員為讀者作的說(shuō)明,是提高程序可讀性的一種手段.二.編譯預(yù)處理每個(gè)以符號(hào)“?!遍_(kāi)頭的行,稱(chēng)為編譯預(yù)處理行.如“#include”稱(chēng)為文件包含預(yù)處理命令.編譯預(yù)處理是C++組織程序的工具.三.程序主體main()表示主函數(shù),每一個(gè)C++程序都必須有一個(gè)main()函數(shù).Main()作為程序的入口.Main()前面的void表示該main()函數(shù)沒(méi)有返回值.函數(shù)體用花括號(hào){

}括起來(lái).描述一個(gè)函數(shù)所執(zhí)行算法的過(guò)程稱(chēng)為函數(shù)定義.例如,這里的main()函數(shù)頭和函數(shù)體構(gòu)成了一個(gè)完整的函數(shù)定義.例如,下面的程序求一個(gè)表達(dá)式的值.#include<iostream.h>voidmain(){inta,b,result;

cout<<"pleaseinputtwonumber:\n";

cin>>a>>b;result=3*a-2*b+1;

cout<<"resultis"<<result<<endl;}運(yùn)行結(jié)果為:

pleaseinputtwonumber:8612resultis235

11.4面向?qū)ο蟮某绦蛟O(shè)計(jì)的重要特征

11.4.1類(lèi)

類(lèi)是一種復(fù)雜的數(shù)據(jù)類(lèi)型,構(gòu)成了實(shí)現(xiàn)C++面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ),它是將不同類(lèi)型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。因此,在面向?qū)ο笾蓄?lèi)具有更高的抽象性,類(lèi)中的數(shù)據(jù)具有隱藏性,類(lèi)還具有封裝性(Inheritance)。類(lèi)是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,它實(shí)際上是一種新的數(shù)據(jù)類(lèi)型,也是抽象類(lèi)型的工具,因?yàn)轭?lèi)是通過(guò)抽象數(shù)據(jù)類(lèi)型的方法來(lái)實(shí)現(xiàn)的一種新的數(shù)據(jù)類(lèi)型。類(lèi)是對(duì)某一類(lèi)對(duì)象的抽象。類(lèi)的定義類(lèi)(Class)是C++的精華,是進(jìn)行封裝和數(shù)據(jù)隱藏的工具。這是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要機(jī)制。封裝是描述把一個(gè)數(shù)據(jù)結(jié)構(gòu)同操作數(shù)據(jù)的函數(shù)銜接在一起構(gòu)成一個(gè)具有類(lèi)類(lèi)型的對(duì)象的術(shù)語(yǔ)。在C++中,封裝借助于類(lèi)來(lái)達(dá)到的。封裝要求一個(gè)對(duì)象應(yīng)具備明確功能,并有一個(gè)接口以便和其它對(duì)象相互作用。函數(shù)是將邏輯上有關(guān)的語(yǔ)句和數(shù)據(jù)集合在一起,主要用于執(zhí)行;而類(lèi)則是邏輯上有關(guān)的函數(shù)及其數(shù)據(jù)的集合,它主要不是用于執(zhí)行,而是提供所需要的資源。在使用一個(gè)類(lèi)之前必須先定義類(lèi)。定義一個(gè)類(lèi)的語(yǔ)法格式如下所示:class<類(lèi)名>{private:<私有成員數(shù)據(jù)及函數(shù);>protected:<保護(hù)成員數(shù)據(jù)及函數(shù);>public:<公共成員數(shù)據(jù)及函數(shù);>};

其中,class是定義類(lèi)的關(guān)鍵字。<類(lèi)名>是一種標(biāo)識(shí)符,一對(duì)花括號(hào)內(nèi)是說(shuō)明部分(包括前面的類(lèi)頭)說(shuō)明該類(lèi)的成員。類(lèi)的成員包含數(shù)據(jù)成員和成員函數(shù)兩部分。一個(gè)類(lèi)含有私有(private)成員、保護(hù)成員(protected)和公有成員(public)三部分。它們?cè)陬?lèi)體內(nèi)(即一隊(duì)花括號(hào)內(nèi))出現(xiàn)的先后順序無(wú)關(guān),并且允許多次出現(xiàn),用它們來(lái)說(shuō)明類(lèi)成員的訪問(wèn)權(quán)限。默認(rèn)時(shí)在類(lèi)中定義的項(xiàng)都是私有的。私有變量和函數(shù)只能被該類(lèi)本身的成員函數(shù)存取或調(diào)用;保護(hù)成員除可以被本類(lèi)中的成員函數(shù)訪問(wèn)外,還可以被本類(lèi)派生的類(lèi)的成員函數(shù)訪問(wèn),因此用于類(lèi)的繼承;公有成員可以被本類(lèi)以外的函數(shù)訪問(wèn),是類(lèi)與外部的接口。

類(lèi)是面向?qū)ο蟪绦蛟O(shè)計(jì)最基本的單元,在設(shè)計(jì)面向?qū)ο蟪绦驎r(shí),首先要以類(lèi)的方式描述實(shí)際待解決的問(wèn)題,也就是將問(wèn)題所要處理的數(shù)據(jù)定義成類(lèi)的私有或公共類(lèi)型的數(shù)據(jù),同時(shí)將處理問(wèn)題的方法定義成類(lèi)的私有或公有的成員函數(shù)。其中,<各個(gè)成員函數(shù)的實(shí)現(xiàn)>是類(lèi)定義中的實(shí)現(xiàn)部分,這部分包含所有在類(lèi)體內(nèi)說(shuō)明的函數(shù)的定義。如果一個(gè)成員函數(shù)在類(lèi)體內(nèi)定義了,實(shí)現(xiàn)部分將不出現(xiàn)。如果所有的成員函數(shù)都在類(lèi)體內(nèi)定義,則實(shí)現(xiàn)部分可以省略。例如,下面給出一個(gè)關(guān)于日期的類(lèi)的定義,該類(lèi)的對(duì)象將是某一個(gè)具體的日期。classTDate{private:

intyear,month,day;public:int

IsLeapYear();voidPrint();};定義類(lèi)時(shí)的注意事項(xiàng)在類(lèi)體中不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。類(lèi)中的數(shù)據(jù)成員類(lèi)型可以是任意的,包含整型、浮點(diǎn)型、字符型、數(shù)組、指針和引用等,也可以是對(duì)象。當(dāng)一個(gè)類(lèi)的對(duì)象作為這個(gè)類(lèi)的成員時(shí),如果另一個(gè)類(lèi)的定義在后,需要提前說(shuō)明。一般,在類(lèi)體先說(shuō)明公有成員,它們是用戶不感興趣的。在說(shuō)明數(shù)據(jù)成員時(shí),一般按數(shù)據(jù)成員的類(lèi)型大小,由小到大說(shuō)明,這樣可提高時(shí)空利用率。經(jīng)常習(xí)慣地將類(lèi)定義的說(shuō)明部分或者整個(gè)定義部分(包含實(shí)現(xiàn)部分)放到一個(gè)頭文件中。11.4.2對(duì)象在C++中,對(duì)象是聲明為類(lèi)類(lèi)型的一個(gè)數(shù)據(jù)項(xiàng),是類(lèi)的實(shí)際變量。程序員也可以定義類(lèi)的變量。這個(gè)定義的類(lèi)的變量在C++中就被稱(chēng)為對(duì)象。對(duì)象有時(shí)也稱(chēng)為類(lèi)的實(shí)例(Instance)。由此可見(jiàn),類(lèi)是程序中的一個(gè)靜態(tài)的概念,而對(duì)象是程序中的一個(gè)動(dòng)態(tài)的概念。對(duì)象是類(lèi)的實(shí)例。對(duì)象是屬于某個(gè)已知的類(lèi)。在創(chuàng)建對(duì)象中,類(lèi)被用作模板,類(lèi)和對(duì)象的關(guān)系就如同整型int與整型變量之間的關(guān)系。因此,定義對(duì)象之前,一定要先定義好該對(duì)象的類(lèi)。對(duì)象的定義在C++中有兩種方法可以定義類(lèi)的對(duì)象:第一種是在定義好類(lèi)后,再定義類(lèi)的對(duì)象,也是最常用的一種對(duì)象的定義方法,其一般格式如下:類(lèi)名對(duì)象1[,對(duì)象2,...];

例如:TDatedate1,data2;

其中,Tdate

為日期類(lèi)的類(lèi)名,date1和date2是一般的對(duì)象名。除此之外,還可以是指向?qū)ο蟮闹羔樆蛞妹?,也可以是?duì)象數(shù)組名。當(dāng)有多個(gè)對(duì)象名時(shí),多個(gè)對(duì)象名之間有逗號(hào)分隔。例如:Tdate*Pdate,data[31];

還有一種是在定義類(lèi)的同時(shí)直接定義類(lèi)的對(duì)象,即在定義類(lèi)的右大括號(hào)“}”后直接寫(xiě)出屬于該類(lèi)的對(duì)象名表列,即:

class類(lèi)名

{

成員變量表列;

成員函數(shù)表列;}對(duì)象名表列;對(duì)象成員的表示方法一個(gè)對(duì)象的成員就是該對(duì)象的類(lèi)所定義的成員。對(duì)象成員有數(shù)據(jù)成員和成員函數(shù)。一般對(duì)象的成員表示如下:<對(duì)象名>.<成員名>或者<對(duì)象名>.<成員名>(<參數(shù)表>)前者用來(lái)表示數(shù)據(jù)成員的,后者用來(lái)表示成員函數(shù)的。例如,date1的成員表示為:

date1.year,date1.month,date1.day

分別表示Tdate類(lèi)的date1對(duì)象的year成員,month成員和day成員。

Date1.SetDate(inty,intm,intd)

表示Tdate類(lèi)的date1對(duì)象的成員函數(shù)SetDate()。

這里,.是一個(gè)運(yùn)算符,該運(yùn)算符的功能是表示對(duì)象的成員,用法同上。

指向?qū)ο蟮闹羔樀某蓡T表示如下:

<對(duì)象指針名>-><成員名>

或者

<對(duì)象指針名>-><成員名>(<參數(shù)表>)

這里的->是一個(gè)表示成員的運(yùn)算符,它用來(lái)表示指向?qū)ο蟮闹羔樀某蓡T。下面的兩種表示是等價(jià)的:

<對(duì)象指針名>-><成員名>與(*<對(duì)象指針名>).<成員名>這對(duì)于成員函數(shù)也適用。

由同一個(gè)類(lèi)所創(chuàng)建的對(duì)象的數(shù)據(jù)結(jié)構(gòu)是相同的,類(lèi)中的成員函數(shù)是共享的。兩個(gè)不同的對(duì)象的名字是不同的,它們的數(shù)據(jù)結(jié)構(gòu)的內(nèi)容(即數(shù)據(jù)成員的值)是不同的。因此,系統(tǒng)對(duì)已經(jīng)定義的對(duì)象僅僅給它分配數(shù)據(jù)成員變量,而一般數(shù)據(jù)成員又都為私有成員,不同對(duì)象的數(shù)據(jù)成員的值可以是不同的。例如:分析下列程序的輸出結(jié)果。#include<iostream.h>#include"tdate.h"voidmain(){Tdatedate1,date2;date1.SetDate(1996,9,1);date2.SetDate(1998,10,10);cout<<leap<<endl;date1.Print();date2.Print();}執(zhí)行該程序后,輸出結(jié)果如下:11996.9.11998.10.10

該程序的主函數(shù)中,定義了兩個(gè)對(duì)象date1和date2,并通過(guò)成員函數(shù)SetDate()個(gè)對(duì)象date1和date2賦值。程序中,通過(guò)成員函數(shù)IsLeapYear()判斷對(duì)象date1的年份(1996)是否是閏年,本例輸出為1表示1996年是閏年。最后,通過(guò)調(diào)用成員函數(shù)Print()輸出顯示對(duì)象date1和date2的數(shù)據(jù)成員的值,即年、月和日。11.4.3構(gòu)造函數(shù)和析構(gòu)函數(shù)對(duì)象的意義表達(dá)了現(xiàn)實(shí)世界的實(shí)體,因此,一旦建立對(duì)象,必須有一個(gè)有意義的初始值。C++規(guī)定與類(lèi)同名的成員函數(shù)是構(gòu)造函數(shù)。建立和初始化對(duì)象的過(guò)程專(zhuān)門(mén)由該類(lèi)的構(gòu)造函數(shù)來(lái)完成。構(gòu)造函數(shù)的功能是在創(chuàng)建對(duì)象時(shí),使用給定的值來(lái)將對(duì)象初始化。這個(gè)構(gòu)造函數(shù)很特殊,只要對(duì)象建立,它馬上被調(diào)用,給對(duì)象分配空間和初始化。C++另有一種析構(gòu)函數(shù),它也是類(lèi)的成員函數(shù),它的功能是用來(lái)釋放一個(gè)對(duì)象的。在對(duì)象刪除前,用它來(lái)做一些清理工作,它與構(gòu)造函數(shù)的功能正好相反。例如,一張桌子要扔掉,必須將桌子里面的東西拿來(lái)這些東西可能有用,不能隨捉系一起扔。類(lèi)似這些事就由析構(gòu)函數(shù)來(lái)完成。構(gòu)造函數(shù)的特點(diǎn)如下:構(gòu)造函數(shù)是成員函數(shù),函數(shù)體可寫(xiě)在類(lèi)體內(nèi),也可以寫(xiě)在類(lèi)體外。構(gòu)造函數(shù)是一個(gè)特殊的函數(shù),該函數(shù)的名字與類(lèi)相同,該函數(shù)不指定類(lèi)型說(shuō)明,它有隱含的返回值,該值由系統(tǒng)內(nèi)部使用。該函數(shù)可以有一個(gè)參數(shù),也可以有多個(gè)參數(shù)。構(gòu)造函數(shù)可以重載,即可以定義多個(gè)參數(shù)個(gè)數(shù)不同的函數(shù)。程序中不能直接調(diào)用構(gòu)造函數(shù),在創(chuàng)建對(duì)象時(shí)系統(tǒng)自動(dòng)調(diào)用構(gòu)造函數(shù)。析構(gòu)函數(shù)的特點(diǎn)如下:析構(gòu)函數(shù)是成員函數(shù),函數(shù)體可以寫(xiě)在類(lèi)體內(nèi),也可以寫(xiě)在類(lèi)體外。析構(gòu)函數(shù)也是一個(gè)特殊的函數(shù),它的名字同類(lèi)名,并在前面加“~”字符,用來(lái)與構(gòu)造函數(shù)加以區(qū)別。析構(gòu)函數(shù)不指定數(shù)據(jù)類(lèi)型,并且沒(méi)沒(méi)有參數(shù)。一個(gè)類(lèi)中只可能定義一個(gè)析構(gòu)函數(shù)。析構(gòu)函數(shù)可以被調(diào)用,也可以調(diào)用。兩種情況下,析構(gòu)函數(shù)被自動(dòng)調(diào)用。若一個(gè)對(duì)象被定義在一個(gè)函數(shù)體內(nèi),則當(dāng)這個(gè)函數(shù)結(jié)束時(shí),該對(duì)象的析構(gòu)函數(shù)被自動(dòng)調(diào)用;當(dāng)一個(gè)對(duì)象用new運(yùn)算符被動(dòng)態(tài)創(chuàng)建,在用delete運(yùn)算符釋放它時(shí),delete會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù)。

在類(lèi)定義時(shí)沒(méi)有定義任何構(gòu)造函數(shù)時(shí),則編譯器自動(dòng)生成一個(gè)不帶參數(shù)的缺省構(gòu)造函數(shù),其格式如下:<類(lèi)名>::<缺省構(gòu)造函數(shù)名>(){}

按構(gòu)造函數(shù)的規(guī)定,缺省構(gòu)造函數(shù)名同類(lèi)名。缺省構(gòu)造函數(shù)的怎樣格式也可以由程序定義在類(lèi)體中。在程序中定義一個(gè)對(duì)象而沒(méi)有指明初始化時(shí),則編譯器便按缺省構(gòu)造函數(shù)來(lái)初始化該對(duì)象。

用缺省構(gòu)造函數(shù)對(duì)對(duì)象初始化時(shí),則將對(duì)象的所有數(shù)據(jù)成員都初始化為零或空。同理,如果一個(gè)類(lèi)中沒(méi)有定義析構(gòu)函數(shù)時(shí),則編譯系統(tǒng)也生成一個(gè)稱(chēng)為缺省析構(gòu)函數(shù),其格式如下:<類(lèi)名>::~<缺省析構(gòu)函數(shù)名>{}<缺省析構(gòu)函數(shù)名>即為該類(lèi)的類(lèi)名。缺省析構(gòu)函數(shù)是一個(gè)空函數(shù)。11.4.4繼承性繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)中最重要的機(jī)制。這種機(jī)制改變了過(guò)去傳統(tǒng)的非面向?qū)ο蟪绦蛟O(shè)計(jì)中那種對(duì)不適合要求的用戶定義數(shù)據(jù)類(lèi)型進(jìn)行改寫(xiě)甚至重寫(xiě)的法克服了傳統(tǒng)程序設(shè)計(jì)方法對(duì)編寫(xiě)出來(lái)的程序無(wú)法重復(fù)利用程序資源的浪費(fèi)的缺點(diǎn)。面向?qū)ο蟪绦蛟O(shè)計(jì)的繼承機(jī)制給我們提供了無(wú)限重復(fù)利用程序資源的一種途徑。

通過(guò)繼承機(jī)制,可以利用已有的數(shù)據(jù)類(lèi)型來(lái)定義新的數(shù)據(jù)類(lèi)型。所定義的的新的數(shù)據(jù)類(lèi)型不僅擁有新定義的成員,而且還同時(shí)擁有舊的成員。我們稱(chēng)已存在的用來(lái)派生新類(lèi)的類(lèi)為基類(lèi),又稱(chēng)父類(lèi)。由已存在的類(lèi)派生出的新類(lèi)稱(chēng)為派生類(lèi),又稱(chēng)為子類(lèi)。

在C++語(yǔ)言中,一個(gè)派生類(lèi)可以從一個(gè)基類(lèi)派生,也可以從多個(gè)基類(lèi)派生。從一個(gè)基類(lèi)派生的繼承稱(chēng)為單繼承;從多個(gè)基類(lèi)派生第一張幻燈片的繼承稱(chēng)為多繼承。單繼承形成了類(lèi)的層次,如圖(a)和(b)所示。ABCXYZ(a)單繼承(b)多繼承派生類(lèi)的定義格式:?jiǎn)卫^承的定義格式如下:

class<派生類(lèi)名>:<繼承方式><基類(lèi)名>{<派生類(lèi)新定義成員>};其中,<派生類(lèi)名>是新定義的一個(gè)類(lèi)的名字,它是從<基類(lèi)名>中派生的,并且按指定的<繼承方式>派生的。<繼承方式>常使用如下三種關(guān)鍵字給予表示:

public表示公有基類(lèi);

private表示私有基類(lèi);

protected表示保護(hù)基類(lèi)。多繼承的定義格式如下:

class<派生類(lèi)名>:<繼承方式1><基類(lèi)名1>,<繼承方式2><基類(lèi)名2>,…{<派生類(lèi)新定義的成員>};

派生類(lèi)的三種繼承方式公有繼承(public)、私有繼承(private)和保護(hù)繼承(protected)是常用的三種繼承方式。1.公有繼承(public)

公有繼承的特點(diǎn)是基類(lèi)的公有成員和保護(hù)成員作為派生類(lèi)的成員時(shí),它們都保持原有的狀態(tài),而基類(lèi)的私有成員仍然是私有的。2.私有繼承(private)

私有繼承的特點(diǎn)是基類(lèi)的公有成員和保護(hù)成員都作為派生類(lèi)的私有成員,并且不能被這個(gè)派生類(lèi)的子類(lèi)所訪問(wèn)。3.保護(hù)繼承(protected)

保護(hù)繼承的特點(diǎn)是基類(lèi)的所有公有成員和保護(hù)成員都成為派生類(lèi)的保護(hù)成員,并且只能被它的派生類(lèi)成員函數(shù)或友元所訪問(wèn),基類(lèi)的私有成員仍然是私有的。將上述三種不同繼承方式的基類(lèi)特性與派生類(lèi)特性見(jiàn)表11.5。

繼承方式基類(lèi)特性派生類(lèi)特性公有繼承publicprotectedprivatepublicprotected不可訪問(wèn)私有繼承publicprotectedprivateprivateprivate不可訪問(wèn)保護(hù)繼承publicprotectedprivateprotectedprotected不可訪問(wèn)對(duì)于公有繼承方式:(1)基類(lèi)成員對(duì)其對(duì)象的可見(jiàn)性:公有成員可見(jiàn),其他不可見(jiàn)。這里保護(hù)成員同于私有成員。(2)基類(lèi)成員對(duì)派生類(lèi)的可見(jiàn)性:公有成員和保護(hù)成員可見(jiàn),而私有成員不可見(jiàn)。這里保護(hù)成員同于公有成員。(3)基類(lèi)成員對(duì)派生類(lèi)對(duì)象的可見(jiàn)性:公有成員可見(jiàn),其他成員不可見(jiàn)。對(duì)于私有繼承方式:(1)基類(lèi)成員對(duì)其對(duì)象的可見(jiàn)性:公有成員可見(jiàn),其他成員是不可見(jiàn)。(2)基類(lèi)成員對(duì)派生類(lèi)的可見(jiàn)性:公有成員和保護(hù)成員是可見(jiàn)的,而私有成員是不可見(jiàn)的?;?lèi)成員對(duì)派生類(lèi)對(duì)象的可見(jiàn)性:所有成員都是不可見(jiàn)的。對(duì)于保護(hù)繼承方式:該繼承方式與私有繼承方式的情況相同。兩者區(qū)別僅在于對(duì)派生類(lèi)成員而言,對(duì)基類(lèi)成員有不同的可見(jiàn)性。11.4.5作用域運(yùn)算符類(lèi)的方法的具體實(shí)現(xiàn)和普通函數(shù)的具體實(shí)現(xiàn)只是在函數(shù)的頭部有略微不同的格式。一般來(lái)說(shuō),如果類(lèi)的方定義是在類(lèi)的外部實(shí)現(xiàn)的,則在定義方法時(shí)必須把類(lèi)名放在方法名之前,中間用作用域運(yùn)算符(“::”)隔開(kāi),其一般形式如下所示:類(lèi)名::方法名

這樣,即使幾個(gè)類(lèi)中的方法名相同,也可以用這種形式把它們區(qū)分開(kāi)來(lái)。和普通函數(shù)一樣,類(lèi)的方法也應(yīng)該既有返回值類(lèi)型,也有參數(shù)表列(當(dāng)然也可以沒(méi)有參數(shù))。一個(gè)方法的頭部各部分如下所示:訪問(wèn)控制:函數(shù)返回值函數(shù)名(參數(shù)表列);

運(yùn)算符::用來(lái)連接類(lèi)名和成員名,以告知編譯程序這個(gè)成員屬于哪個(gè)類(lèi)。但作用域運(yùn)算符還有其它的用途:它允許在一個(gè)封閉的作用域里村區(qū)與局部說(shuō)明相同的名字。例如:inti;//全局變量voidf(){inti;//局部變量i=10;//使用局部變量}

但是,如果函數(shù)f()要存取全局變量i,只需要將運(yùn)算符::置于i之前即可。如下所示:inti;//全局變量voidf(){inti;//局部變量::i=10;//全局變量}11.4.6動(dòng)態(tài)內(nèi)存分配在C語(yǔ)言里,動(dòng)態(tài)內(nèi)存分配是通過(guò)使用函數(shù)malloc()和free()實(shí)現(xiàn)的。為

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論