c與c的區(qū)別課件_第1頁
c與c的區(qū)別課件_第2頁
c與c的區(qū)別課件_第3頁
c與c的區(qū)別課件_第4頁
c與c的區(qū)別課件_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

從C語言到C++語言C++的學習用書任何一本你能接觸到的C++編程書籍譚教授的書清華王燕《面向?qū)ο蟮睦碚撆cC++實踐》航空工業(yè)趙建周《C和C++程序設(shè)計教程》C與C++的不同C++在代碼上對C的擴充大不相同C:面向過程C++:面向?qū)ο竺嫦蜻^程的結(jié)構(gòu)化程序設(shè)計方法缺點:可重用性差、數(shù)據(jù)安全性差、難以開發(fā)大型軟件和圖形界面的應(yīng)用軟件把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體。當數(shù)據(jù)結(jié)構(gòu)改變時,所有相關(guān)的處理過程都要進行相應(yīng)的修改。每一種相對于老問題的新方法都要帶來額外的開銷。圖形用戶界面的應(yīng)用程序,很難用過程來描述和實現(xiàn),開發(fā)和維護也都很困難。面向?qū)ο蟪绦蛟O(shè)計—C++語言將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離的整體——對象。對同類型對象抽象出其共性,形成類。主要特征是各對象之間的消息傳遞和各類之間的繼承。類通過一個簡單的外部接口,與外界發(fā)生關(guān)系。對象與對象之間通過消息進行通信。面向?qū)ο蟪绦蛟O(shè)計一個類的集合和各類之間以繼承關(guān)系聯(lián)系起來的結(jié)構(gòu),再加上一個主程序,在主程序中定義各對象并規(guī)定它們之間傳遞消息的規(guī)律。面向?qū)ο缶幊蹋簩ο?數(shù)據(jù)結(jié)構(gòu)+算法(封裝);程序=對象+對象+對象+……炒菜吃:買凈菜、按照烹調(diào)說明書炒菜C語言中的關(guān)鍵字AutobreakcasecharcontinuedefaultdodoubleelseentryenumexternforfloatgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedwhileC++語言中的關(guān)鍵字Asmautobreakcasecatch*cdeclcharclass*constcontinuedefaultdelete*dodoubleelseenumexternfarfloatforfriend*gotohugeifinline*intinterrupulongnearnew*

operator*pascalprivate*

protected*public*registerreturnshortsignedsizeofstaticstructswitchtemplate*this*throw*try*typedefunionunsignedvirtual*voidvolatilewhileC++對C的保留C++具有對傳統(tǒng)C語言的向后兼容性,很多已有的C程序可以稍加改造就可以重用。雖然C++具備面向?qū)ο蟮奶幚砟芰Γ€是保留了很多面向過程的東西。用C++完全可以不用面向?qū)ο蟮乃枷雭磉M行程序設(shè)計,當然人們不會這樣去做——除了那些只是把C++看成是C擴充的初學者。一個簡單的C++程序例子#include<iostream>#include<string>voidmain(){ stringuser_name; cout<<"Pleaseenteryourfirstname:"; cin>>user_name; cout<<'\n' <<"Hello," <<user_name <<"...andgoodbye!\n";}C++對C在代碼上的擴充引用voids&a,int&b)作用:傳遞數(shù)據(jù)、不復(fù)制副本函數(shù)重載:一物多用 intmax(inta,intb,intc) longmax(longa,longb,longc) floatmax(floata,floatb,floatc)幾個C++的概念面對對象技術(shù):軟件系統(tǒng)對現(xiàn)實世界的直接模擬,盡量實現(xiàn)將現(xiàn)實世界中的事物直接影射到軟件系統(tǒng)的解空間?,F(xiàn)實空間問題面向?qū)ο蠼饪臻g物質(zhì):一輛白色的自行車意識:自行車具體事物:一個對象----自行車的實例抽象概念:自行車類幾個C++的概念--對象對象名:王東對象的狀態(tài): 性別:男 身高:180cm 體重:68kg對象的功能(可做的操作):回答身高回答體重回答性別修理電器教計算機課均屬于自身所承受的操作均屬于施加于其他對象的操作行為:用來描述對象動態(tài)特征的操作序列屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。一個人,王東,男,身高180cm,體重68kg,會修電器、能教計算機課。幾個C++的概念—類分類——人類通常的思維方法。生活中,我們總是會把各種物體進行分類。分類所依據(jù)的原則——抽象忽略事物的非本質(zhì)特征,只注意那些與當前目標有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。例如,石頭、樹木、汽車、房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念,它們分別代表了各種不同類的物體。幾個C++的概念類:具有相同屬性和服務(wù)的一組對象的集合,是對一組客觀對象的抽象,它將該組對象所具有的共同特征(包括屬性特征和行為特征)集中起來,以說明該組對象的能力和性質(zhì)。如,“表”,屬性特征:時、分、秒;行為特征:設(shè)定時間,顯示時間。類是多個實例的綜合抽象,而實例又是類的個體實物。利用類可以實現(xiàn)數(shù)據(jù)的封裝、隱藏、繼承與派生。類與對象—類公有類型成員:在關(guān)鍵字public后面聲明,它們是類與外部的接口,任何外部函數(shù)都可以訪問公有類型數(shù)據(jù)和函數(shù)。私有類型成員:在關(guān)鍵字private后面聲明,只允許本類中的函數(shù)訪問,而類外部的任何訪問都是非法的。保護類型成員:與private類似,其差別表現(xiàn)在繼承與派生時對派生類的影響不同。類的一個例子classClock{public:

voidSetTime(intNewH,intNewM,intNewS);

voidShowTime();private:intHour,Minute,Second;};成員數(shù)據(jù)(屬性)成員函數(shù)(行為)voidClock::SetTime(intNewH,intNewM,intNewS){Hour=NewH;Minute=NewM;Second=NewS;}voidClock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second;}成員函數(shù)的聲明:返回值類型類名::函數(shù)成員名(參數(shù)表){函數(shù)體}類的聲明成員數(shù)據(jù):與一般的變量聲明相同,但需要將它放在類的聲明體中。成員函數(shù):稱為“方法”,一個方法對應(yīng)一個操作??梢栽陬愔姓f明原型,在類外給出函數(shù)體實現(xiàn),并在函數(shù)名前使用類名加以限定。也可以直接在類中給出函數(shù)體,形成內(nèi)聯(lián)成員函數(shù)。一般而言,數(shù)據(jù)成員用private,成員函數(shù)用public只有被聲明為public的方法(成員函數(shù))才能被外界所激活簡單的成員函數(shù)的實現(xiàn)直接嵌入類的聲明中(inline),復(fù)雜的則可寫在外面。類與對象—對象類的對象是該類的某一特定實體,即類類型的變量。聲明形式:

類名對象名;例:

ClockmyClock;構(gòu)造函數(shù)構(gòu)造函數(shù)的作用是在對象被創(chuàng)建時使用特定的值構(gòu)造對象,或者說將對象初始化為一個特定的狀態(tài)。(在聲明對象時進行的數(shù)據(jù)成員設(shè)置,稱為對象的初始化。)構(gòu)造函數(shù)也是成員函數(shù),被聲明為公有型,與類名同名,無返回值。構(gòu)造函數(shù)在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。構(gòu)造函數(shù)也可以被重載,在對象創(chuàng)建時由系統(tǒng)自動調(diào)用。如果程序中未聲明,則系統(tǒng)自動產(chǎn)生出一個默認形式的構(gòu)造函數(shù),該函數(shù)沒有參數(shù),不進行任何操作構(gòu)造函數(shù)舉例classClock{public:

Clock(intNewH,intNewM,intNewS);//構(gòu)造函數(shù) voidSetTime(intNewH,intNewM,intNewS); voidShowTime();private: intHour,Minute,Second;};構(gòu)造函數(shù)的實現(xiàn):Clock::Clock(intNewH,intNewM,intNewS){ Hour=NewH; Minute=NewM; Second=NewS;}建立對象時構(gòu)造函數(shù)的作用:intmain(){

Clockc(0,0,0);//隱含調(diào)用構(gòu)造函數(shù),將初始值作為實參。c.ShowTime();}析構(gòu)函數(shù)“清理善后”:在撤銷對象時,系統(tǒng)自動調(diào)用析構(gòu)函數(shù)(destructor),釋放此對象所屬的空間。析構(gòu)函數(shù)名:與類名相同,只是在函數(shù)名前面加一個“~”,以區(qū)別于構(gòu)造函數(shù)只能用一個析構(gòu)函數(shù),不能重載若用戶未編寫析構(gòu)函數(shù),編譯系統(tǒng)會自動生成一個缺省的析構(gòu)函數(shù),它不進行任何操作構(gòu)造函數(shù)和析構(gòu)函數(shù)舉例#include<iostream>classPoint{public:Point(intxx,intyy);~Point();//...其他函數(shù)原型private:intX,intY;};Point::Point(intxx=0,intyy=0){X=xx;Y=yy;}Point::~Point(){}//...其他函數(shù)的實現(xiàn)略PointPointA //點A(0,0)PointPointB(4,5) //B(4,5)類的應(yīng)用舉例1#include<iostream.h>classClock//時鐘類的聲明{public://外部接口,公有成員函數(shù)voidSetTime(intNewH=0,intNewM=0,intNewS=0);

voidShowTime();private://私有數(shù)據(jù)成員intHour,Minute,Second;};//時鐘類成員函數(shù)的具體實現(xiàn)voidClock::SetTime(intNewH,intNew,MintNewS){Hour=NewH;Minute=NewM;Second=NewS;}voidClock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second;}//主程序Voidmain() {clockmyClook; //定義對象myClockcout<<“Firsttimesetandoutput:”<<endl;myClook.SetTime();//設(shè)置時間為默認值myClook.ShowTime(); //顯示時間cout<<“Secondtimesetandoutput;”<<endl;myClook.SetTime(8,30,30); //設(shè)置時間為8:30:30myClook.ShowTime(); //顯示時間}程序運行結(jié)果:Firsttimesetandoutput:0:0:0Secondtimesetandoutput:8:30:30程序由類Clock的定義、類成員函數(shù)的實現(xiàn)和主函數(shù)三個獨立部分組成,通過類對問題進行了高度的抽象和封閉化的描述,在主程序中聲明類的實例—對象并完成消息的傳遞從而解決了問題。面向?qū)ο蟮奶匦苑庋b性繼承性多態(tài)性封裝性封裝:將一個數(shù)據(jù)和與這個數(shù)據(jù)有關(guān)的操作集合放在一起,形成一個能動的實體----對象,用戶不必知道對象行為的實現(xiàn)細節(jié),只需根據(jù)對象提供的外部特性接口訪問對象即可。從用戶的角度來看,這些對象的行為就象包含在一個“黑匣子”里,是隱蔽的、看不見的。C++的封裝思想C++利用類(class)的形式來實現(xiàn)封裝的。具有相同結(jié)構(gòu)和特性的所有對象構(gòu)成一種“類型”——類(class)類是用來定義對象的一種抽象數(shù)據(jù)類型對象(object):數(shù)據(jù)(屬性)+操作(行為)類是對具有相同結(jié)構(gòu)和特性的對象的抽象,而對象是類的具體實例(instance)首都類:北京、巴黎、莫斯科、華盛頓…類相當于是用戶自定義的數(shù)據(jù)類型,其性質(zhì)和其他數(shù)據(jù)類型(如整型、實型…)相同structstudent

{

intnumber;charname[10];charsex;

floatsocre;

};structstudentstudent1,student2;只包含數(shù)據(jù),不包含操作C++如何封裝數(shù)據(jù)和操作?classstudent

{private:

intnumber;

charname[10];

floatsocre;

public:

voiddisplay()

{cout<<“number:”<<numer<<endl;……}

voidsetnum(inta)

{number=a;}

};studentstud1,stud2stud1.display()對象類名數(shù)據(jù)成員成員函數(shù)一般而言,數(shù)據(jù)成員用private,外界無法隨意改動數(shù)據(jù)成員函數(shù)用public,外界能夠方便的訪問操作數(shù)據(jù)簡單的成員函數(shù)的實現(xiàn)直接嵌入類的聲明中(inline),復(fù)雜的則可寫在外面。聲明為private的私有數(shù)據(jù),外部無法訪問;通過public的成員函數(shù)為類提供外部接口,外界只能通過這個接口來與該類發(fā)生聯(lián)系。外界通過發(fā)“消息”來激活有關(guān)方法,所謂消息,其實就是一個命令,由程序語句來實現(xiàn)C++的封裝Stud1.setnum()就是向?qū)ο髎tud1發(fā)出一個消息,通知它執(zhí)行setnum()方法(設(shè)定學號)stud1.display()就是向?qū)ο髎tud1發(fā)出一個消息,通知它執(zhí)行display方法(顯示學號)所以,我們不必了解或改動這個“黑匣子”的具體結(jié)構(gòu)和算法,只需通過接口就能方便地完成數(shù)據(jù)的通信和執(zhí)行相關(guān)的操作。通過類的機制實現(xiàn)了對數(shù)據(jù)的有效隱蔽,使程序中不同部分之間的相互影響減少到最低程度,增強了程序的安全性。C++的封裝繼承與派生面向?qū)ο蠹夹g(shù)強調(diào)軟件的可重用性,在C++中可重用性是通過“繼承”這一機制來實現(xiàn)的例:我們想在前面的學生信息中增加“年齡”“地址”等信息是重新定義一個新的類student1?還是在已有類student的基礎(chǔ)上加上一些新的內(nèi)容?“長方形”繼承了“形狀”的全部特征,“正方形”繼承了“長方形”的全部特征“長方形”是“形狀”派生出來的一個分支,“正方形”是“長方形”派生出來的一個分支形狀shape橢圓形ellipse長方形rectangle三角形triangle圓形circle正方形square直角三角形鈍角三角形銳角三角形問題舉例繼承與派生在C++中所謂“繼承”就是在一個已存在的類的基礎(chǔ)上新增自己的特性而建立一個新的類已存在的類稱為“基類”或“父類”,新建立的類稱為“派生類”或“子類”派生類繼承了基類的所有數(shù)據(jù)成員和成員函數(shù),并增加了新的成員繼承使我們得以將一群相關(guān)的類組織起來,并讓我們得以分享其間的共通數(shù)據(jù)和操作行為保持已有類的特性而構(gòu)造新類的過程稱為繼承。派生類的聲明class派生類名:繼承方式基類名{成員聲明;}三種繼承方式:公有繼承、私有繼承、保護繼承不同繼承方式的影響主要體現(xiàn)在: 派生類成員對基類成員的訪問權(quán)限 通過派生類對象對基類成員的訪問權(quán)限classstudent1:publicstudent{

private:

intage;

stringaddress;

public:

voiddisplay_1(){cout<<“age:”<<age<<endl;cout<<“address:”<<address<<endl;}};表明student1為公用派生類private表明student1為私有派生類公有繼承(public)基類的public和protected成員的訪問屬性在派生類中保持不變,但基類的private成員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。通過派生類的對象只能訪問基類的public成員。私有繼承(private)基類的public和protected成員都以private身份出現(xiàn)在派生類中,但基類的private成員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。通過派生類的對象不能直接訪問基類中的任何成員。保護繼承(protected)基類的public和protected成員都以protected身份出現(xiàn)在派生類中,但基類的private成員不可直接訪問。派生類中的成員函數(shù)可以直接訪問基類中的public和protected成員,但不能直接訪問基類的private成員。通過派生類的對象不能直接訪問基類中的任何成員派生類的繼承關(guān)系基類私有(private)成員公用(public)成員保護(protected)成員公用(public)派生類不可訪問的成員公用成員保護成員私有(private)派生類不可訪問的成員私有成員私有成員protected成員的特點與作用對建立其所在類對象的模塊來說,它與private成員的性質(zhì)相同。對于其派生類來說,它與public成員的性質(zhì)相同。既實現(xiàn)了數(shù)據(jù)隱藏,又方便繼承,實現(xiàn)代碼重用。例公有繼承舉例classPoint //基類Point類的聲明{public: //公有函數(shù)成員

voidInitP(floatxx=0,floatyy=0) //構(gòu)造函數(shù)初始化{X=xx;Y=yy;}

voidMove(floatxOff,floatyOff) //移動該點{X+=xOff;Y+=yOff;}

floatGetX(){returnX;} //返回X軸坐標值 floatGetY(){returnY;} //返回Y軸坐標值private: //私有數(shù)據(jù)成員 floatX,Y;};classRectangle:publicPoint//派生類聲明(長方形類){public: //新增公有函數(shù)成員

voidInitR(floatx,floaty,floatw,floath)//設(shè)置長方形 {InitP(x,y);W=w;H=h;} //調(diào)用基類公有成員函數(shù) floatGetH(){returnH;} //返回長方形的高 floatGetW(){returnW;} //返回長方形的寬private: //新增私有數(shù)據(jù)成員

floatW,H; //長、寬};#include<iostream>#include<cmath> //數(shù)學公式的頭文件intmain(){Rectanglerect; rect.InitR(2,3,20,10); //設(shè)置長方形 rect.Move(3,2); //通過派生類對象訪問基類公有成員 cout<<rect.GetX()<<',‘ //2+3=5 <<rect.GetY()<<',‘ //3+2=5 <<rect.GetW()<<',‘ //20<<rect.GetH()<<endl; //10 return0;}多態(tài)性同一個消息可以根據(jù)發(fā)送消息對象的不同采用不同的行為方式。重載(overloading)

:通過為函數(shù)和運算符創(chuàng)建附加定義而使它們的名字可以重載。也就是說相同名字的函數(shù)和運算符對不同類型的消息可以表現(xiàn)出不同的行為。虛函數(shù)(Virtual):使用戶在一個類等級中可以使用相同函數(shù)的多個版本。函數(shù)重載的一個例子—C中intmax1(inta,intb,intc){ if(b>a)a=b; if(c>a)a=c; returna;}double

max2(doublea,doubleb,doublec){……}類型不同的數(shù)據(jù)間比較需分別調(diào)用兩個不同名的函數(shù)來實現(xiàn)。a1、b1、c1為int型:max1(a1,b1,c1)a2、b2、c2為double型:max2(a2,b2,c2)函數(shù)重載的一個例子——C++中intmax(inta,intb,intc){ if(b>a)a=b; if(c>a)a=c; returna;}doublemax(doublea,doubleb,doublec){

if(b>a)a=b; if(c>a)a=c;r eturna;}a1、b1、c1為int型:max(a1,b1,c1)a2、b2、c2為double型:max(a2,b2,c2)類型不同的數(shù)據(jù)間比較可以使用同名的函數(shù)來實現(xiàn),程序自動判斷選擇合適的類型。運算符重載例8-1將“+”、“-”運算重載為復(fù)數(shù)類的成員函數(shù)。規(guī)則:實部和虛部分別相加減。操作數(shù):兩個操作數(shù)都是復(fù)數(shù)類的對象。#include<iostream>classcomplex //復(fù)數(shù)類聲明{public: //外部接口 complex(doubler=0.0,doublei=0.0){real=r;imag=i;}

//構(gòu)造函數(shù) complexoperator+(complexc2);//+重載為成員函數(shù) complexoperator-(complexc2);//-重載為成員函數(shù) voiddisplay(){cout<<"("<<real<<","<<imag<<")"<<endl;}; //輸出復(fù)數(shù)private: //私有數(shù)據(jù)成員 doublereal; //復(fù)數(shù)實部 doubleimag; //復(fù)數(shù)虛部}; 63complexcomplex::

operator+(complexc2)//重載函數(shù)實現(xiàn){ complexc;

c.real=c2.real+real; c.imag=c2.imag+imag; returncomplex(c.real,c.imag);}64complexcomplex::

operator-(complexc2)//重載函數(shù)實現(xiàn){ complexc;

c.real=real-c2.real; c.imag=imag-c2.imag; returncomplex(c.real,c.imag);}65intmain()//主函數(shù){ complexc1(5,4),c2(2,10),c3;//聲明復(fù)數(shù)類的對象 cout<<"c1=";c1.display(); cout<<"c2=";c2.display();

c3=c1-c2; //使用重載運算符完成復(fù)數(shù)減法 cout<<"c3=c1-c2="; c3.display();

c3=c1+c2; //使用重載運算符完成復(fù)數(shù)加法 cout<<"c3=c1+c2="; c3.display();}66程序輸出的結(jié)果為:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)67繼承中的一個問題長方形的面積:Area=W*H;正方形的面積:Area=L*L;正方形從長方形繼承而來,顯然就有了兩個同名但操作并不相同的求面積的成員函數(shù),當計算正方形面積時,怎么樣才能準確調(diào)用正方形派生類中的函數(shù)呢?長方形rectangle正方形square繼承#include<iostream> classPoint{public: Point(doublei,doublej){x=i;y=j;} doubleArea()const{return0.0;}private: doublex,y;};classRectangle:publicPoint{public: Rectangle(doublei,doublej,doublek,doublel); doubleArea()const{returnw*h;}private: doublew,h;};Rectangle::Rectangle(doublei,doublej,doublek,doublel):Point(i,j){ w=k;h=l;}voidfun(Point&s) //&s用到了引用{ cout<<"Area="<<s.Area()<<endl;}intmain(){

Rectanglerec(3.0,5.2,15.0,25.0); fun(rec);}運行結(jié)果:Area=0虛函數(shù)虛函數(shù)(Virtual):若某類中的一個成員函數(shù)被說明為虛函數(shù),就意味著成員函數(shù)在派生類中可能存在著不同的實現(xiàn)在類的聲明中,在函數(shù)原型之前寫virtualVirtual函數(shù)類型函數(shù)名(形參表){ 函數(shù)體}virtual只用來說明類聲明中的原型,不能用在函數(shù)實現(xiàn)時。虛函數(shù)具有繼承性,基類中聲明了虛函數(shù),派生類中無論是否說明,同原型函數(shù)都自動為虛函數(shù)。本質(zhì):不是重載聲明而是覆蓋。調(diào)用方式:通過基類指針或引用,執(zhí)行時會

根據(jù)指針指向的對象的類,決定調(diào)用哪個函數(shù)#include<iostream>classPoint{public: Point(doublei,doublej){x=i;y=j;}

virtualdoubleArea()const{return0.0;} //virtual:虛函數(shù)private: doublex,y;};classRectangle:publicPoint{public: Rectangle(doublei,doublej,doublek,doublel);

virtualdoubleArea()const{returnw*h;} //virtual:虛函數(shù)private: doublew,h;};//其他函數(shù)同上例voidfun(Point&s){ cout<<"Area="<<s.Area()<<endl;}intmain(){ Rectanglerec(3.0,5.2,15.0,25.0); fun(rec);}運行結(jié)果:Area=375intmax(inta,intb,intc){if(b>a)a=b;

if(c>a)a=c;

returna;}模板(tem

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論