第10講-類與對象-1解析課件_第1頁
第10講-類與對象-1解析課件_第2頁
第10講-類與對象-1解析課件_第3頁
第10講-類與對象-1解析課件_第4頁
第10講-類與對象-1解析課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第十講類與對象第十講類與對象類和對象的概念類的定義對象對象的定義引用對象的成員對象的賦值對象的作用范圍和生存期構(gòu)造函數(shù)析構(gòu)函數(shù)C++語言程序設(shè)計(jì)2概述類和對象類和對象是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)的兩個最基本概念。對象就是客觀事物在計(jì)算機(jī)中的抽象描述。是問題域中的實(shí)體。例如繪畫程序中的一個矩形,游戲程序中的一個具體人物。類是對具有相似屬性和行為的一組對象的統(tǒng)一描述。例如繪畫程序中的形體,游戲程序中的一類角色。類與對象3類C++的類是在結(jié)構(gòu)體的基礎(chǔ)上擴(kuò)充而來的。類是把各種不同類型的數(shù)據(jù)(稱為數(shù)據(jù)成員)和對數(shù)據(jù)的操作(成員函數(shù))組織在一起而形成的用戶自定義的數(shù)據(jù)類型。C語言中的結(jié)構(gòu)體只包含具有某種聯(lián)系的不同類型的數(shù)據(jù)成員。C++中,類定義包括類說明和類實(shí)現(xiàn)兩大部分。說明部分提供了對該類所有數(shù)據(jù)成員和成員函數(shù)的描述。實(shí)現(xiàn)部分提供了所有成員函數(shù)的實(shí)現(xiàn)代碼。類與對象4類定義類的一般形式使用class的格式類與對象class

類名{private:

私有的數(shù)據(jù)成員或成員函數(shù)protected:

保戶的數(shù)據(jù)成員或成員函數(shù)public:

公有的數(shù)據(jù)成員或成員函數(shù)};各成員函數(shù)的實(shí)現(xiàn)代碼5類定義類的說明class是定義類的關(guān)鍵字,類名由用戶自己定義,必須是C++的有效標(biāo)識符,一般首字母大寫。大括號括起來的部分是類的成員(數(shù)據(jù)成員和函數(shù)成員)。它們分成三部分,分別由private、public、proctected三個關(guān)鍵字后跟冒號來指定。這三部分可以以任何順序出現(xiàn),且在一個類的定義中,這三部分并非必須同時(shí)出現(xiàn)。類與對象6類定義類的說明類的成員private成員在類之外是不能存取的,只有類中的成員函數(shù)才能存取private的數(shù)據(jù)成員和成員函數(shù)。protected成員只有類的成員函數(shù)及其子類(派生類)可以存取protected的成員。public成員可被程序中的任何函數(shù)或語句存取,public成員多為成員函數(shù),用來提供一個與外界的接口,外界只有通過這個接口才可以實(shí)現(xiàn)對private成員的存取。當(dāng)定義類時(shí),當(dāng)未指明成員是哪部分時(shí),默認(rèn)是屬于private成員,但一般不要采用默認(rèn)形式。類與對象7類定義類的說明例如:描述圖書的類的定義類與對象classBook{private:

charname[20];

//表示圖書的名稱

intnumber;

//表示圖書編號public:

voidregist(char*a,intb);//給各數(shù)據(jù)成員賦值

voidshow();

//顯示各數(shù)據(jù)成員的值};8類定義類的說明使用struct定義類例如:描述圖書的類的定義與用class定義的唯一區(qū)別:當(dāng)未指明成員訪問屬性時(shí),默認(rèn)是public成員。類與對象struct

Book{private:

charname[20];

//表示圖書的名稱

intnumber;

//表示圖書編號public:

voidregist(char*a,intb);//給各數(shù)據(jù)成員賦值

voidshow();

//顯示各數(shù)據(jù)成員的值};9類定義類的說明要特別注意,在類的定義中,類的說明部分的右邊大括號后面必須有一分號。根據(jù)類的定義,可看出:類是實(shí)現(xiàn)封裝的工具。所謂封裝就是將類的成員按使用或存取的方式分類,有條件地限制對類成員的使用。封裝是通過public和private訪問屬性與成員函數(shù)實(shí)現(xiàn)的。private的成員構(gòu)成類的內(nèi)部狀態(tài)。public的成員則構(gòu)成與外界通信的接口。通過public的成員函數(shù)來使用private的數(shù)據(jù)成員,從而在C++中實(shí)現(xiàn)了封裝。類與對象10類成員函數(shù)的定義類中的成員函數(shù)可以在以下兩處定義:將成員函數(shù)的定義直接寫在類的定義中。在類的定義體中只寫出成員函數(shù)的原型說明,而成員函數(shù)的定義寫在類的定義之后。將成員函數(shù)的定義直接寫在類中如:對于前面定義的圖書類Book來說,其成員函數(shù)regist和show的定義可直接寫在類的定義體中。類與對象11類成員函數(shù)的定義將成員函數(shù)的定義直接寫在類中(cw1001)類與對象classBook{private:charname[20];

intnumber;public:

voidregist(char*a,intb)//成員函數(shù)regist()的定義

{

strcpy(name,a);//給數(shù)據(jù)成員name賦值

number=b;//給數(shù)據(jù)成員number賦值

}

voidshow()//成員函數(shù)show()的定義

{

cout<<"名稱:"<<name<<endl;

cout<<"號碼:"<<number<<endl;}};在類中直接定義成員函數(shù)的情況一般適合于成員函數(shù)規(guī)模較小的情況,也就是說它們一般為內(nèi)聯(lián)函數(shù),即使沒有明確用inline關(guān)鍵字。12類成員函數(shù)的定義在類的定義體中只寫出成員函數(shù)的原型說明,而成員函數(shù)的定義寫在類的定義之后。這種情況比較適合于成員函數(shù)體較大的情況。這時(shí)要求在定義成員函數(shù)時(shí),在函數(shù)的名稱之前加上其所屬類名及作用域運(yùn)算符“::”。定義成員函數(shù)的一般類型為:返回值類型類名::成員函數(shù)名(參數(shù)表){

函數(shù)體}類與對象13類成員函數(shù)的定義將成員函數(shù)的定義寫在類定義的外面(cw1002)類與對象#include<iostream.h>#include<string.h>classBook{private:charname[20];

intnumber;public:voidregist(char*a,intb);//成員函數(shù)regist()的聲明

voidshow();//成員函數(shù)show()的聲明};14類成員函數(shù)的定義將成員函數(shù)的定義寫在類定義的外面(cw1002)續(xù)類與對象voidBook::regist(char*a,intb)//成員函數(shù)regist()的定義{

strcpy(name,a);//給數(shù)據(jù)成員name賦值

number=b;//給數(shù)據(jù)成員number賦值}voidBook::show()//成員函數(shù)show()的定義{

cout<<"名稱:"<<name<<endl;

cout<<"號碼:"<<number<<endl;}15類成員函數(shù)的定義通常將類的定義寫在一個頭文件(.h文件)中,成員函數(shù)的定義寫在一個程序文件(.cpp文件)中。這樣,就相當(dāng)于把類的定義(頭文件)看成是類的外部接口,類的成員函數(shù)的定義看成類的內(nèi)部實(shí)現(xiàn)。例如:上例可改成將類的定義體寫在Book.h文件中,而成員函數(shù)的定義體寫在另外一個文件Book.cpp中。在Book.cpp中要包含Book.h文件。類與對象#include“Book.h”voidBook::regist(char*a,intb){……}voidBook::show(){……}16對象對象的定義對象是類的實(shí)例,定義對象的一般格式為:類名對象名;例如Bookbook1,book2;book1,book2就是Book類型的變量,也就是Book類的兩個對象類是抽象的概念,而對象是具體的,類只是一種數(shù)據(jù)類型,而對象是屬于該類(數(shù)據(jù)類型)的一個變量,占用了各自的存儲單元。每個對象各自具有了該類的一套數(shù)據(jù)成員(靜態(tài)成員除外),而所有成員函數(shù)是所有對象共有的。每個對象的函數(shù)成員都通過指針指向同一個代碼空間。類與對象17對象訪問對象的成員訪問對象的成員包括讀寫對象的數(shù)據(jù)成員和調(diào)用它的成員函數(shù),其訪問格式是:對象名.成員名例如類與對象voidmain(){Bookbook1,book2;//調(diào)用成員函數(shù)regist,給book1的數(shù)據(jù)成員賦值

book1.regist("C++語言程序設(shè)計(jì)",1001);//調(diào)用成員函數(shù)regist,給book2的數(shù)據(jù)成員賦值

book2.regist("C++語言參考",1002);//調(diào)用成員函數(shù)show,顯示book1對象的數(shù)據(jù)成員的值

book1.show();//調(diào)用成員函數(shù)show,顯示book2對象的數(shù)據(jù)成員的值

book2.show();}名稱:C++語言程序設(shè)計(jì)號碼:1001名稱:C++語言參考號碼:100218對象訪問對象的成員注意:對于類的私有成員,只能通過其成員函數(shù)來訪問,不能在類外對私有成員訪問。調(diào)用成員函數(shù)時(shí)要在函數(shù)名之前加上對象名和“.”即可,即先指明對象,再指明成員。也可以采用指向?qū)ο蟮闹羔榿碓L問,但要在函數(shù)名前加上指針變量名和“->”。類與對象19對象訪問對象的成員注意:任何對對象私有數(shù)據(jù)的訪問都必須通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn),而且所發(fā)送的消息還必須是該對象能夠識別和接受的。在C++中,消息發(fā)送正是通過公有成員函數(shù)的調(diào)用來實(shí)現(xiàn)的。由于類接口隱藏了對象的內(nèi)部細(xì)節(jié),用戶只能通過類接口訪問對象,因此,在類設(shè)計(jì)中必須提供足夠的公有接口以捕獲對象的全部行為,這正是類設(shè)計(jì)中的一個最基本的要求。類與對象20對象this指針成員函數(shù)如何知道某次調(diào)用的對象?在對象調(diào)用book1.regist(“C++編程教程”,1001);時(shí),成員函數(shù)regist除了接受兩個實(shí)參外,還接受了一個對象book1的地址,這個地址被一個隱含的形參this指針?biāo)@取,它等同于執(zhí)行this=&book1,那么所有對數(shù)據(jù)成員的訪問都隱含地被加上前綴:this->。因此,在成員函數(shù)體regist中,執(zhí)行就等價(jià)于類與對象strcpy(name,a);number=b;strcpy(this->name,a);this->number=b;21對象this指針成員函數(shù)如何知道某次調(diào)用的對象?這樣,上例中的成員函數(shù)regist也可這樣定義:通過以上方法就確保了不同對象調(diào)用成員函數(shù)時(shí)訪問的是不同對象的數(shù)據(jù),而它們之間沒有干擾。類與對象voidBook::regist(char*a,intb){strcpy(this->name,a);this->number=b;}22對象對象賦值語句對于同一個類生成的兩個對象,可以進(jìn)行賦值,其功能是將一個對象的數(shù)據(jù)成員賦值到另一個對象中去。例如類與對象#include"Book.h"voidmain(){Bookbook1,book2;book1.regist("C++語言程序設(shè)計(jì)",1001);book2=book1;book1.show();book2.show();}名稱:C++語言程序設(shè)計(jì)號碼:1001名稱:C++語言程序設(shè)計(jì)號碼:100123對象對象的作用域與生存期對象是類的實(shí)例,它實(shí)質(zhì)就是某種數(shù)據(jù)類型的變量,在不同的位置以不同的方式定義對象時(shí),其作用域和生存期是不同的。局部對象(不包括局部靜態(tài)對象)其作用域是定義它的函數(shù)體,生存期從函數(shù)調(diào)用開始到函數(shù)調(diào)用結(jié)束,下一次再重新調(diào)用函數(shù)時(shí),再重新構(gòu)造對象。構(gòu)造局部對象的次序(即分配存儲單元)是按它們在函數(shù)體中聲明的順序。全局對象全局對象的作用域是整個程序,生存期是整個程序的運(yùn)行時(shí)間。它也是在程序運(yùn)行前(即在主函數(shù)運(yùn)行前)只構(gòu)造一次。類與對象24對象對象的作用域與生存期靜態(tài)對象(局部靜態(tài)和全局靜態(tài))其作用域是定義它的函數(shù)體或程序文件,其生存期是整個程序。構(gòu)造靜態(tài)對象的次序是按它們在程序中出現(xiàn)的先后次序,并在整個程序運(yùn)行開始時(shí)(即在主函數(shù)運(yùn)行前)只構(gòu)造一次。類中成員的構(gòu)造次序是以類中聲明成員的次序進(jìn)行。類與對象25對象的初值變量的初值全局變量和靜態(tài)變量在定義時(shí),將自動賦初值為0;局部變量在定義時(shí),其初始值不固定的。對象的初值當(dāng)對象被定義時(shí),由于對象的意義表達(dá)了現(xiàn)實(shí)世界的實(shí)體,所以一旦定義對象,就必須有一個有意義的初始值。與變量定義相似,如果創(chuàng)建的是全局對象或靜態(tài)對象,則對象的默認(rèn)值為0,否則對象的初始值是不定的。指對象的數(shù)據(jù)成員的初值。類與對象26對象的初值案例分析:對象的初值觀察全局對象或靜態(tài)對象,局部對象的初始值。類與對象#include<iostream.h>classPerson{private:charname[20];

intage;public:voidshow(){cout<<"Name:"<<name<<"|age:"<<age<<endl;}}person1;Name:|age:0Name:燙燙燙燙燙燙燙燙燙燙燙燙?|age:-858993460voidmain(){person1.show();Personperson2;person2.show();}27對象的初始化變量的初始化變量在定義時(shí)通過初始化式指定初值。對象的初始化在C++中,在定義對象的同時(shí),給該對象初始化的方法就是利用構(gòu)造函數(shù)。只包含數(shù)據(jù)成員的結(jié)構(gòu)體類型的變量可以采用初始化式。類與對象structDate{intyear,month,day;}today={2008,2,10};28構(gòu)造函數(shù)構(gòu)造函數(shù)(constructor)構(gòu)造函數(shù)是與類名同名的特殊的成員函數(shù),當(dāng)定義該類的對象時(shí),構(gòu)造函數(shù)將被自動調(diào)用以實(shí)現(xiàn)對該對象的初始化。構(gòu)造函數(shù)的定義格式為:類名(形參說明){函數(shù)體}構(gòu)造函數(shù)不能有返回值,因而不能指定包括void在內(nèi)的任何返回值類型。構(gòu)造函數(shù)的定義體可與其它函數(shù)成員一樣,放在類內(nèi)或類外都可。構(gòu)造函數(shù)既可定義成有參函數(shù),也可定義成無參函數(shù),要根據(jù)問題的需要來定。類與對象29構(gòu)造函數(shù)案例分析:構(gòu)造函數(shù)類Person包括4個數(shù)據(jù)成員,用來記錄人員信息。生成對象obj,并使用構(gòu)造函數(shù)為obj賦予初始值。(cw1005)類與對象#include<string.h>#include<iostream.h>classPerson{private:charname[10];

intage;

intsalary;chartel[8];public:

Person(char*xname,int

xage,int

xsalary,char*xtel);voiddisp();};30構(gòu)造函數(shù)案例分析:構(gòu)造函數(shù)類與對象Person::Person(char*xname,int

xage,int

xsalary,char*xtel){

strcpy(name,xname);age=xage;salary=xsalary;

strcpy(tel,xtel);}voidPerson::disp(){

cout<<endl;

cout<<"姓名:"<<name<<endl;

cout<<"年齡:"<<age<<endl;

cout<<"工資:"<<salary<<endl;

cout<<"電話:"<<tel<<endl<<endl;}31構(gòu)造函數(shù)案例分析:構(gòu)造函數(shù)類與對象voidmain(){Personobj("張立三",25,850,"45672314");

obj.disp();}姓名:張立三年齡:25

工資:850

電話:4567231432構(gòu)造函數(shù)構(gòu)造函數(shù)的重載如果一個類中出現(xiàn)了兩個以上的同名的成員函數(shù)時(shí),稱為類的成員函數(shù)的重載。案例分析:重載的構(gòu)造函數(shù)類Book定義兩個重載的構(gòu)造函數(shù),其中一個是無參函數(shù),另一個是有參函數(shù)。(cw1006)類與對象classBook{private:charbookname[30];

intnumber;public:Book();//第1個構(gòu)造函數(shù)說明

Book(char*a,intb);//第2個構(gòu)造函數(shù)說明

voidshow();};33構(gòu)造函數(shù)案例分析:重載的構(gòu)造函數(shù)類與對象Book::Book()//第1個構(gòu)造函數(shù)定義{

strcpy(bookname,“noname");number=0;}Book::Book(char*a,intb)//第2個構(gòu)造函數(shù)定義{

strcpy(bookname,a);number=b;}voidBook::show()//show的函數(shù)定義{

cout<<"booknameis:"<<bookname<<endl;

cout<<"booknumberis:"<<number<<endl;}34構(gòu)造函數(shù)案例分析:重載的構(gòu)造函數(shù)類與對象voidmain()//主程序{

//自動調(diào)用構(gòu)造函數(shù)Book(char*a,intb)

Bookmybook("VisualC++6.0",10020);

mybook.show();

//自動調(diào)用構(gòu)造函數(shù)Book()

Bookyourbook;

yourbook.show();}booknameis:VisualC++6.0booknumberis:10020booknameis:nonamebooknumberis:0可見,當(dāng)出現(xiàn)構(gòu)造函數(shù)重載時(shí),其匹配方式同普通函數(shù)重載時(shí)的匹配方式。35構(gòu)造函數(shù)默認(rèn)構(gòu)造函數(shù)C++規(guī)定,每個類必須有一個構(gòu)造函數(shù)。如果在類中沒有顯式定義構(gòu)造函數(shù)時(shí),則C++編譯系統(tǒng)在編譯時(shí)為該類提供一個默認(rèn)的構(gòu)造函數(shù),該默認(rèn)構(gòu)造函數(shù)是個無參函數(shù),它僅負(fù)責(zé)創(chuàng)建對象,而不做任何初始化工作。在用默認(rèn)構(gòu)造函數(shù)創(chuàng)建對象時(shí),如果創(chuàng)建的是全局對象或靜態(tài)對象,則對象的默認(rèn)值為0,否則對象的初始值是不定的。只要一個類定義了一個構(gòu)造函數(shù)(不一定是無參構(gòu)造函數(shù)),C++編譯系統(tǒng)就不再提供默認(rèn)的構(gòu)造函數(shù)。類與對象36構(gòu)造函數(shù)帶缺省參數(shù)的構(gòu)造函數(shù)當(dāng)構(gòu)造函數(shù)有缺省參數(shù)時(shí),稱為具有缺省參數(shù)的構(gòu)造函數(shù),在使用時(shí)要防止二義性。類與對象classMyclass{private:

intmember;public:

Myclass();

Myclass(inti);};Myclass::Myclass(){member=10;}Myclass::Myclass(inti=10){member=i;}voidmain(){

Myclassx(20);

//下面一行產(chǎn)生二義性,

//無法確定自動調(diào)用哪個構(gòu)造函數(shù)完成對象的構(gòu)造

Myclassy;}ambiguouscalltooverloadedfunction37析構(gòu)函數(shù)析構(gòu)函數(shù)當(dāng)一個對象被定義時(shí),系統(tǒng)自動調(diào)用構(gòu)造函數(shù)為該對象分配相應(yīng)的資源,當(dāng)對象使用完畢后,這些系統(tǒng)資源需要在對象消失前被釋放。析構(gòu)函數(shù)是類的一個特殊成員函數(shù),其函數(shù)名稱是在類名的前面加上~,它沒有返回值,沒有參數(shù)。不能被隨意調(diào)用,只是在對象生命期結(jié)束時(shí),被系統(tǒng)自動調(diào)用。析構(gòu)函數(shù)的定義方式為:~類名(){函數(shù)體}類與對象38析構(gòu)函數(shù)析構(gòu)函數(shù)一個類中只能擁有一個析構(gòu)函數(shù),即不能重載。如果程序員在定義類時(shí),沒有為類提供析構(gòu)函數(shù),則系統(tǒng)會自動創(chuàng)建一個默認(rèn)的析構(gòu)函數(shù),其形式為:~類名(){}對于一個簡單的類來說,大多可以直接使用系統(tǒng)提供的默認(rèn)析構(gòu)函數(shù)。但是,如果在類的對象中有動態(tài)分配的內(nèi)存(如:用new申請分配的內(nèi)存)時(shí),就必須為該類提供適當(dāng)?shù)奈鰳?gòu)函數(shù),完成清理工作(釋放內(nèi)存)。對象被析構(gòu)的順序與對象建立時(shí)的順序正好相反。即最后構(gòu)造的對象先被析構(gòu)。類與對象39析構(gòu)函數(shù)案例分析:析構(gòu)函數(shù)類Teacher的構(gòu)造函數(shù)為name申請存儲空間,在析構(gòu)函數(shù)中釋放該空間。(cw1008)類與對象#include<string.h>#include<iostream.h>classTeacher{private:

char*name;

intage;public:

Teacher(char*i,inta)

{

//用new為name成員分配堆內(nèi)存

name=newchar[strlen(i)+1];40析構(gòu)函數(shù)案例分析:析構(gòu)函數(shù)類與對象

strcpy(name,i);

age=a;

cout<<"執(zhí)行構(gòu)造函數(shù)Teacher()"<<endl;

};

~Teacher()

{

deletename;

cout<<"執(zhí)行析構(gòu)函數(shù)~Teacher()"<<endl;

};

voidshow();};voidTeacher::show(){

cout<<"姓名:"<<name<<endl<<"年齡:"<<age<<endl;}41析構(gòu)函數(shù)案例分析:析構(gòu)函數(shù)類與對象voidmain(){

Teacherteacher("張立三",25);

teacher.show();

cout<<endl;}執(zhí)行構(gòu)造函數(shù)Teacher()姓名:張立三年齡:25執(zhí)行析構(gòu)函數(shù)~Teacher()什么時(shí)候被執(zhí)行的?42拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是C++中引入的一種新的構(gòu)造函數(shù)。定義一個拷貝構(gòu)造函數(shù)的方式是:類名(const類名&形式參數(shù)){函數(shù)體}由此可看出:拷貝構(gòu)造函數(shù)的名稱與類的名稱相同,且它只有一個參數(shù),該參數(shù)就是對一個該類對象的引用??截悩?gòu)造函數(shù)的功能是用于實(shí)現(xiàn)對象值的拷貝,通過將一個同類對象的值拷貝給一個新對象,來完成對新對象的初始化,即用一個對象去構(gòu)造另外一個對象。初始化式參數(shù)傳遞類與對象43拷貝構(gòu)造函數(shù)案例分析:拷貝構(gòu)造函數(shù)(cw1009a)類與對象classPoint{private:

intx,y;public:

Point(){}

Point(int

inx,int

iny)

{

x=inx;

y=iny;

}

Point(Point&p){x=p.x;y=p.y;

cout<<"執(zhí)行拷貝構(gòu)造函數(shù)"<<endl;}voidShow(char*name){

cout<<endl<<name<<"("<<x<<","<<y<<")"<<endl;}};voidPrint(Pointp){

p.Show("");}44拷貝構(gòu)造函數(shù)案例分析:拷貝構(gòu)造函數(shù)類與對象voidmain(){

Pointp1(1,2),p2;

p2=p1;

cout<<"執(zhí)行對象間的賦值"<<endl;

Pointp3(p1);

p1.Show("p1");

p2.Show("p2");

p3.Show("p3");

Pointp4=p1;

cout<<endl<<"p4";

Print(p4);}45拷貝構(gòu)造函數(shù)默認(rèn)的拷貝構(gòu)造函數(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論