面向?qū)ο笳n件05(第五章)_第1頁
面向?qū)ο笳n件05(第五章)_第2頁
面向?qū)ο笳n件05(第五章)_第3頁
面向?qū)ο笳n件05(第五章)_第4頁
面向?qū)ο笳n件05(第五章)_第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章

類與對象

第五章類與對象

§5.1面向?qū)ο蠓椒?/p>

§5.2類的定義

§5.3對象的創(chuàng)建

§5.4對象的初始化

§5.5特殊的類成員

§5.1面向?qū)ο蠓椒?/p>

?面向?qū)ο蟮幕舅枷?/p>

?面向?qū)ο笏枷氲挠蓙砼c發(fā)展

.面向?qū)ο蟮幕?既念

§5.1面向?qū)ο蠓椒?/p>

面向?qū)ο蟮幕舅枷?/p>

■從現(xiàn)實世界中客觀存在的事物(對象)出發(fā)

來構(gòu)造系統(tǒng)

對象:對問題領域內(nèi)人、物、事情等的抽象

■并在系統(tǒng)構(gòu)造中運用人類的自然思維方式

(抽象、分類、組合、繼承、封裝)

§5.1面向?qū)ο蠓椒?/p>

面向?qū)ο蟛粌H是一些具體的軟件開發(fā)

技術(shù),它是一整套關于如何看待軟件系

統(tǒng)與現(xiàn)實世界關系,以何種觀點來研究

問題并進行求解,以及如何進行系統(tǒng)構(gòu)

造的軟件方法學

§5.1面向?qū)ο蠓椒?/p>

?用面向?qū)ο笏枷霕?gòu)造軟件的主要內(nèi)容

①對象是系統(tǒng)的基本單位

②對象的屬性和操作的有機結(jié)合組成一個完

整的對象

③具有共同特征的對象抽象成類

④對類進一步抽象,形成類簇

⑤對象之間存在靜態(tài)關系和動態(tài)關系(組合、

繼承、消息等)

§5.1面向?qū)ο蠓椒?/p>

面向?qū)ο蠡舅枷搿橄?/p>

?現(xiàn)實世界的事物抽象成對象

?現(xiàn)實世界事物之間的關系抽象成軟件系統(tǒng)中

對象之間的關系

?具有共同特征的對象抽象成類

?具有共同特征的類抽象成基類和派生類

§5.1面向?qū)ο蠓椒?/p>

面向?qū)ο蠡舅枷搿庋b

?對象是屬性和操作的組合

?對象的表現(xiàn)(服務,接口)和實現(xiàn)細節(jié)分開

§5.1面向?qū)ο蠓椒?/p>

?面向?qū)ο蠓椒ǖ亩x

利用抽象、封裝等機制,借助于對

象、類、繼承、消息傳遞等概念進行軟

件系統(tǒng)構(gòu)造的軟件開發(fā)方法

§5.1面向?qū)ο蠓椒?/p>

?面向?qū)ο蟮挠蓙砼c發(fā)展

面向?qū)ο蠓椒ㄆ鹪从诿嫦驅(qū)ο蟮木幊陶Z言

在編程語言得到充分發(fā)揮和應用的同時,面向

對象方法得到了發(fā)展。

反過來又為面向?qū)ο缶幊烫峁┝讼绕诘脑O計和

指導

§5.1面向?qū)ο蠓椒?/p>

?面向?qū)ο蠓椒ㄊ擒浖碚摰姆佃睔w真

?軟件開發(fā)的發(fā)展過程

面向過程

程序員面向數(shù)據(jù)

的智慧

面向功能

和技巧面向?qū)ο?/p>

面向應用

面向數(shù)據(jù)流

§5.1面向?qū)ο蠓椒?/p>

面向?qū)ο蠡靖拍?/p>

?對象

?消息

?類

?類與對象的關系

§5.1面向?qū)ο蠓椒?/p>

對象

?對象是對問題域中客觀存在的事物的抽象,它

是一組屬性和在這些屬性上的操作的封裝體

?對象的兩大要素:屬性和操作

-屬性:狀態(tài),特征,組成成員

-操作:修改屬性,訪問屬性,執(zhí)行命令

§5.1面向?qū)ο蠓椒?/p>

例:“文件”作為一個對象

屬性:操作:

文件名一filename文件復制----copy

文件長度一length文件更名----rename

修改日期一modify-date文件打印----print

文件內(nèi)容一contents

§5.1面向?qū)ο蠓椒?/p>

消息

向?qū)ο蟀l(fā)出的服務請求

■是面向?qū)ο笙到y(tǒng)中對象之間交互的途徑

■要素:發(fā)送者、接受者、服務、參數(shù)

■oopl中的消息是對類的成員函數(shù)的調(diào)用

■對消息的響應取決于接受消息的對象

§5.1面向?qū)ο蠓椒?/p>

類class

?類是具有相同屬性和操作的一組對象的集合,它為屬

于該類的全部對象提供了統(tǒng)一的抽象描述

。類是對一類對象的抽象

。類定義了這一類對象所共有的特征和行為

人類抽象思維的產(chǎn)物

Ooopl中的類相當于一種數(shù)據(jù)類型

§5.1面向?qū)ο蠓椒?/p>

類與對象的關系

?類是抽象的,對象是具體的

?類是模板,對象是實例

?類是類型,對象是變量

?類是靜態(tài)的,對象是動態(tài)的

§5.1面向?qū)ο蠓椒?/p>

?類是具有相似特征的對象的抽象

-文件類所有具體文件對象的抽象

-書類所有具體書對象的抽象

-學生類所有具體學生對象的抽象

§5.2類的定義

?類定義的一般形式

?內(nèi)聯(lián)函數(shù)與非內(nèi)聯(lián)函數(shù)

?類成員的訪問控制

?類作用域

§5.2類的定義

?類定義的一般形式

class類名嘉合森

類定義

public:、體中的

公有數(shù)據(jù)和函數(shù)數(shù)據(jù)和

>函數(shù)分

別稱為:

private:數(shù)據(jù)成

員和成

私有數(shù)據(jù)和函數(shù)員函數(shù)

分號不能丟!

§5.2類的定義

?類定義體中包括兩種類的成員:

數(shù)據(jù)成員和函數(shù)成員

?通常類的定義格式:

class類名

(

public:

成員函數(shù)

private:

數(shù)據(jù)成員

};

§5.2類的定義

例:定義一個“文件”類

classFILE

public:

boolcopy(FILE&target);

操作

boolrename(char*new_name);>

成員函數(shù)

boolprint();,

private:

charfile_name[100];

屬性

intlength;

數(shù)據(jù)成員

char.contents;

);

§5.2類的定義

?操作的實現(xiàn)(成員函數(shù)的定義)

boolFILE::copy(.......)

}

boolFILE::rename(......)

}

boolFILE::print()

§5.2類的定義

?注:

①類中說明的數(shù)據(jù)成員不能初始化

②類中數(shù)據(jù)成員的類型可以是int,char,

float等各種數(shù)據(jù)類型,還可以是對象

§5.2類的定義

?內(nèi)聯(lián)函數(shù)與非內(nèi)聯(lián)函數(shù)

(1)內(nèi)聯(lián)函數(shù)

classFILE

(

boolrename(char*new_name)

{"

strcpy(filename,newname);

}一"

);

成員函數(shù)的函數(shù)體定義在類體內(nèi)

§5.2類的定義

⑵非內(nèi)聯(lián)函數(shù)

classFILE

(

boolrename(char*new_name);

};

boolFILE::rename(char*newname)

(-

strcpy(file_name,new_name);

}~~

注:在類體外定義的成員函數(shù)要在函數(shù)名前加上類名,以便與普

通函數(shù)相區(qū)別

§5.2類的定義

⑶二者比較

內(nèi)聯(lián)函數(shù)的好處:

類的定義集中(將類的所有成員都放在類定義體中)

運行速度快

內(nèi)聯(lián)函數(shù)的缺點:

類定義的規(guī)模太大

可讀性不好

通常,將簡單的函數(shù)作為內(nèi)聯(lián)函數(shù)

將功能復雜的函數(shù)作為非內(nèi)聯(lián)函數(shù)

§5.2類的定義

?類定義可分為類界面與類實現(xiàn)

類界面:只包括類的所有數(shù)據(jù)成員和成

員函數(shù)原型

存放在頭文件中(.HPP)

類實現(xiàn):包括類的所有成員函數(shù)的定義

存放在源文件中(.CPP)

§5.2類的定義

?類的成員的訪問控制(封裝在類中的實現(xiàn))

一公有(public)-公開

--保護(protected)■適當公開

"私有(private)“不公開

§5.2類的定義

?封裝(信息隱藏)

實現(xiàn)(implementation)

接口(interface)

§5.2類的定義

?封裝的好處

9用戶角度:簡單

只了解接口,不用了解細節(jié)

只需要結(jié)果,不規(guī)定實現(xiàn)方式

0對象角度:保護

信息安全(不直接訪問數(shù)據(jù))

安全審計(auditing)

§5.2類的定義

訪問控制的基本原則:

?類的數(shù)據(jù)成員一般不公開

"private,protected

?表示接口的成員函數(shù)一般公開

—public

?與實現(xiàn)細節(jié)有關的成員函數(shù)不公開

—private,protected

§5.2類的定義

注:

?默認的類成員訪問控制方式為private

?各種訪問控制方式在類定義體中的先后

順序無關

?通常將對外接口部分pub1ic放在前

舉例:用“售報亭”對象描述現(xiàn)實中的一個售

報亨

報刊A

屬報刊B

錢箱

月艮報刊零售

務貨款清單

/

消息、:顧客對售報亭說:“買一份《每日新報》!"

消息的接受者:某個售報亭

要求的服務:報刊零售

輸入的信息:要買的報刊種類,份數(shù)和遞進去的錢

返回的信息:買到的報紙和找回的零錢

§5.2類的定義

類作用域

類的作用域包括:

類的定義體{);

類的所有非內(nèi)聯(lián)函數(shù)的定義體

類成員的作用域是類作用域

類對象的作用域遵循一般變量的作用域規(guī)則

§5.3對象的創(chuàng)建

?直接創(chuàng)建對象

?使用對象成員

?對象的作用域與生存期

?舉例

§5.3對象的創(chuàng)建

?創(chuàng)建對象有兩種方式:

直接創(chuàng)建

動態(tài)創(chuàng)建(用new運算符創(chuàng)建)

嵩?直接創(chuàng)建對象

格式:〈類名〉〈對象名表》

例如:FILEfl,f2;?>intx9y;

夢?一

殍卜

4§5.3對象的創(chuàng)建

使用對象成員

格式:

〈對象名〉?〈數(shù)據(jù)成員名〉

或〈對象名〉?〈函數(shù)成員名〉(參數(shù)表)

?其中〈稱為成員選擇運算符

§5.3對象的創(chuàng)建

訪問成員變量

strcpy(fl.filename,"oopd.daf5);

f2.1ength+=:10;

訪問成員函數(shù)

fl.copy(f2);注:只有public的成員

才能調(diào)用或訪問

fl.renameC'classA");

§5.3對象的創(chuàng)建

對象的作用域與生存期

?遵循一般變量的作用域、生存期規(guī)則

.例:[兵局對象]

FILEmyfile;

voidmain()

(局部對象

1-----

FILEyourfile;、

myfile.copy(yourfile);

yourfile.renameCcnewname55);J

§5.3對象的創(chuàng)建

?域操作符::

::identifier文件域標識符

②classname:identifier類域標識符

③identifier當前域標識符

boolFILE::rename(charfilename)

strcpy(FILE::filename,filename);

舉例:定義一個日期類,該類的對象是某個具體日期

〃日期類的界面

classDATE

{

public:

voidsetdate(inty,intm,intd);

intisleapyear();

voidprint();

private:

intyear,month,day;

};

//以上存入date,hpp文件中

〃日期類的實現(xiàn)

#include''date.hpp”

voidDATE::setdate(inty,intm,intd)

(

year=y;

month=m;

day=d;

}

intDATE::isleapyear()

{

return(year%4=0&&year%100!=0)||(year%400==0);

}

voidDATE::print()

(

cout?year?',,?month?',,?day?endl;

}

〃以上存入date.cpp文件中

〃分析下列程序的輸出結(jié)果

#include<iostream.h>

#include"date.cpp''

voidmain()

(

DATEdl,d2;

dl.setdate(199655,4);

d2.setdate(2004,l1,8);

intleapedl.isleapyear();程序執(zhí)行結(jié)果:

cout?leap?endl;1

dl.print();1996,5,4

d2.print();2004,11,8

§5.4對象的初始化

.對象的初始化問題

.構(gòu)造函數(shù)

.構(gòu)造函數(shù)的含義及特點

.默認構(gòu)造函數(shù)

.析構(gòu)函數(shù)

§5.4對象的初始化

類對象成員不能在類定義時初始化

classFILE

(

public:

private:

intlength=O;

charfHe_name[]="testcpp'';

);

類是一種模板,類定義時并不分配內(nèi)存

§5.4對象的初始化

另一種情況:

FILEmyfile;

myfile.filename[]="test.cpp'';

數(shù)據(jù)成員file_name是私有的,外界不能訪問,

只能通過類中定義的成員函數(shù)來訪問

§5.4對象的初始化

?類成員的初始化在對象創(chuàng)建時進行

FILEmy_flle("test.cpp");

FILEyourfileC'noname.cpp59);

?實現(xiàn):構(gòu)造函數(shù)

§5.4對象的初始化

構(gòu)造函數(shù)與析構(gòu)函數(shù)

在C++中,類的成員函數(shù)有兩種:

(1)構(gòu)造函數(shù)與析構(gòu)函數(shù)

⑵普通的成員函數(shù)

構(gòu)造函數(shù)與析構(gòu)函數(shù)是在類定義體中說明的

兩個特殊的成員函數(shù)

§5.4對象的初始化

classFILE

(

public:

FILE(charname[]);〃構(gòu)造函數(shù)

private:

intlength;

charfile_name[100];

/

);

§5.4對象的初始化

?構(gòu)造函數(shù)的實現(xiàn)

FILE::FILE(charname[])

{

strcpy(file_name9name);

length=O;

§5.4對象的初始化

構(gòu)造函數(shù)的調(diào)用時間

在對象建立時由系統(tǒng)自動調(diào)用

FILEmyfilef'myfile.cpp55);

FILE*pfile=newFILEf'yourfile.cpp55);

§5.4對象的初始化

構(gòu)造函數(shù)的含義

直接含義:

對象建立時,初始化對象的數(shù)據(jù)成員

間接含義:

構(gòu)造一個具有意義的、正確的對象

§5.4對象的初始化

構(gòu)造函數(shù)的特點

?是類的成員函數(shù)

?函數(shù)名與類名相同(區(qū)別于其他成員函數(shù))

?無返回值,void也不能有(只進行初始化)

?由系統(tǒng)自動調(diào)用(當對象被創(chuàng)建時)

?必須是公有(public)成員(系統(tǒng)調(diào)用也遵守訪問控制規(guī)則)

?可以重載

?可以初始化常量數(shù)據(jù)成員

§5.4對象的初始化

?構(gòu)造函數(shù)舉例

#include<iostream.h>

classRECT

(

public:

RECT(int19intw);

voidarea();

private:

intlength,width;

);

RECT::RECT(int1,intw)

(

length=l;

width=w;

}

voidRECT::area()

(

cout?4tarea=,,?length*width?endl;

}

voidmain()

(

RECTa(5,8);

RECTb(9,4);

a.area();

b.area();

§5.4對象的初始化

程序執(zhí)行結(jié)果:內(nèi)存分配情況:

area=40

area=36

§5.4對象的初始化

?構(gòu)造函數(shù)的重載

classPOLYGON

(

public:

POLYGON();〃默認構(gòu)造函數(shù)

POLYGON(intedgNum);

POLYGON(charcolor,intedgNum=3);

private:

intedgnum;〃邊的個數(shù)

charlinecolor;〃線的顏色

POINTpoint[100];〃各頂點位置

);

§5.4對象的初始化

默認構(gòu)造函數(shù)

POLYGON::POLYGON()

(

edg_num=3;

line_color=0;

fbr(inti=0;i<edg_num;i++)

point[i].x=point[i].y=0;

每個頂點坐標x,y位置初始值為0

§5.4對象的初始化

帶參數(shù)的構(gòu)造函數(shù)

POLYGON::POLYGON(intedgNum)

edg_num=edgNum;

line_color=0;

fbr(inti=0;i<edg_num;i++)

point[i].x=point[i].y=0;

§5.4對象的初始化

?創(chuàng)建兩個對象:(在主程序中)

POLYGONpgl;〃自動調(diào)用默認構(gòu)造函數(shù)

POLYGONpg2(4);〃自動調(diào)用帶參數(shù)構(gòu)造函數(shù)

§5.4對象的初始化

默認構(gòu)造函數(shù)

每個類必須有一個構(gòu)造函數(shù)

如果沒定義構(gòu)造函數(shù),則C++系統(tǒng)提供默認構(gòu)造函數(shù)

(donothing)

如果定義了構(gòu)造函數(shù),則C++不再提供默認構(gòu)造函數(shù)

如:POLYGONpgl;〃無初始化值的對象

必須要有一個默認的構(gòu)造函數(shù)!

§5.4對象的初始化

析構(gòu)函數(shù)

類的特殊的成員函數(shù)

構(gòu)造函數(shù)

在類的對象創(chuàng)建時由系統(tǒng)自動調(diào)用的函數(shù)

析構(gòu)函數(shù)

在類的對象生命期結(jié)束時由系統(tǒng)自動調(diào)用

的函數(shù)

§5.4對象的初始化

例:

#include<iostream.h>

classDEMO_CLASS

{

public:

DEMO_CLASS(inti);

^DEMO_CLASS();〃析構(gòu)函數(shù)

);

DEMO_CLASS::DEMO_CLASS(inti)

(

cout?ctInitialvalueis:,,?i?endl;

return;

)

DEMOCLASS::?DEMO_CLASS()

{——

cout?“Goodby!\n'';

return;

)

voidmain()

(

DEMO_CLASSobj(30);〃創(chuàng)建一個對象obj

cout?ctThisistheendofmain(

§5.4對象的初始化

?程序執(zhí)行結(jié)果:

Initialvalueis:30

Thisistheendofmain().

Goodby!

?說明:

(1)對象obj的作用域及生命期在main()內(nèi),對象創(chuàng)建

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

(2)程序執(zhí)行到main()的y處,貝》obj的生命期結(jié)束,

系統(tǒng)自動調(diào)用析構(gòu)函數(shù),并收回obj所占用的內(nèi)存

空間

§5.4對象的初始化

析構(gòu)函數(shù)的特點:

?是類的成員函數(shù)

?函數(shù)名為類名前加'?'(邏輯反運算符)

?無返回值,void也不能有

?無參數(shù)

?由系統(tǒng)自動調(diào)用(當對象生命期結(jié)束時)

?必須是公有(public)成員(系統(tǒng)調(diào)用也遵守訪問控

制規(guī)則)

?不可以重載

§5.4對象的初始化

析構(gòu)函數(shù)的意義

?直接意義

-在對象退出生命期前由系統(tǒng)調(diào)用的函數(shù)

?間接意義

-對象能正確、合理地退出生命期

?如:釋放占用資源,通知有關對象

§5.4對象的初始化

構(gòu)造函數(shù)和析構(gòu)函數(shù)

?相同點

-由系統(tǒng)自動調(diào)用

-沒有返回值

-公有函數(shù)

?不同點

-作用不同,調(diào)用時間不同

-構(gòu)造函數(shù)可以重載,可以有參數(shù)

§5.5特殊的類成員

?常量成員

對象一旦定義,就不能更改該成員

?靜態(tài)成員

不屬于對象的成員,由類的所有對象共享

?對象成員

一個類的對象作為另一個類的數(shù)據(jù)成員

§5.5特殊的類成員

口常量成員

口靜態(tài)成員

口對象成員

§5.5特殊的類成員

?常量成員:對象一旦定義,就不能更改該成員

?用const說明的成員,稱為常量成員

?常量成員的定義

常量數(shù)據(jù)成員的定義:constintedgnum;

常量成員函數(shù)的定義:voidprint()const;

§5.5特殊的類成員

常量數(shù)據(jù)成員只能初始化,不能被賦值

例:

classSILLY

public:

SILLY()

ten=10;常量不能賦值!

private:

constintten;

);

§5.5特殊的類成員

常量成員的初始化

classSILLY

public:

SILLY():ten(10)〃初始化常量數(shù)據(jù)成員

〃此處不能再對ten賦值

private:

constintten;

};

§5.5特殊的類成員

?例:定義一個多邊形的類

classPOLYGON

public:

private:

constintedgnum;〃邊數(shù)確定的對象

charlinecolor;

);

注:常量成員不能作為左值

§5.5特殊的類成員

?方法一

POLYGON::POLYGON():edg_num(3)

{

line_color=0;

for(……)

?方法二

POLYGON::POLYGON(intedgNum):edgnum(edgNum)

{"

line_color=0;

for(……)

....;用構(gòu)造函數(shù)的參數(shù)edgNum的

}值初始化常量成員edgnum

§5.5特殊的類成員

?常量成員的使用注意:

⑴常量成員只能初始化,不能賦值

⑵常量成員的初始化必須在成員初始化參

數(shù)表中進行

§5.5特殊的類成員

非常量成員,也可在成員初始化參數(shù)表中進

行初始化

例:

POLYGON::POLYGON(charcolor,intedgNum)

:edgnum(edgNum),linecolor(color)

fbr(inti=0;........)

§5.5特殊的類成員

?靜態(tài)成員

-用static說明的成員

?靜態(tài)成員分為:

-靜態(tài)數(shù)據(jù)成員

-靜態(tài)函數(shù)成員

?靜態(tài)成員由類的所有對象共享

(不屬于某個對象)

§5.5特殊的類成員

?彳列:要記錄FILE類中有多少個文件對象

classFILE

(

public:

staticintget_file_number()〃靜態(tài)成員函數(shù)

{——

returnfilenumber;

}"

private:

staticintfilenumber;〃靜態(tài)數(shù)據(jù)成員

};

§5.5特殊的類成員

?理解靜態(tài)成員

§5.5特殊的類成員

靜態(tài)成員的使用

⑴靜態(tài)成員的初始化必須在全局范圍進行

intFILE::file_number=O;

classFILE

(

private:\/

staticintfilenumber=O;X

);A

voidmain()

intFILE::file_number=O;

§5.5特殊的類成員

⑵靜態(tài)數(shù)據(jù)成員可以由所有成員函數(shù)訪問

voidFILE::incFileNum()

(

file_number++;

}"

⑶靜態(tài)成員函數(shù)只可以訪問靜態(tài)數(shù)據(jù)成員

staticintget_file_number()〃靜態(tài)成員函數(shù)

cout?file_name;V//是對象的特征

returnfile_number;\/

§5.5特殊的類成員

靜態(tài)成員的用途

記錄對象個數(shù)(用來保存流動變化的對象個數(shù))

一般在構(gòu)造函數(shù)中增加,析構(gòu)函數(shù)中遞減

所有對象共享資源(它不屬于某個對象)

如:內(nèi)存,文件,數(shù)據(jù)庫,打印機等

?例:分析程序執(zhí)行結(jié)果

#include<iostream.h>

classMYCLASS

public:

MYCLASS(inta,intb,intc);

voidget_number();

voidget_sum();

private:

intx,y,z;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論