C++程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):第6章 繼承和派生類_第1頁
C++程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):第6章 繼承和派生類_第2頁
C++程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):第6章 繼承和派生類_第3頁
C++程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):第6章 繼承和派生類_第4頁
C++程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):第6章 繼承和派生類_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二部分第二部分 C+C+面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 本章內(nèi)容本章內(nèi)容 繼承性、基類和派生類的基本概念繼承性、基類和派生類的基本概念 派生類的定義和派生類對(duì)象的組成派生類的定義和派生類對(duì)象的組成 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù) 虛基類虛基類 賦值兼容規(guī)則賦值兼容規(guī)則2 2 6.1 繼承概述繼承概述l 類與類之間的關(guān)系class B int a, b; public: B(int i, int j) a=i; b=j; class A int x; B bb; public: A( int i, int j, int k): bb (i, j), x( k ) ; 1

2、、“有有”關(guān)系(關(guān)系(has a)3 3#include class X friend class Y; int x; public: void set(int i) x=i; void Display()coutx=xendl; ; class Yint yy; public: Y(int,X&); void Display(X); ;2、“友友”關(guān)系(關(guān)系(friend)3、繼承與派生、繼承與派生“是是”關(guān)系(關(guān)系(is a)父子關(guān)系父子關(guān)系4 4繼承的定義l 繼承:在原有類(基類或父類)的基礎(chǔ)上,經(jīng)過適當(dāng)擴(kuò)充和完善建立新的類(派生類或子類) l 繼承的本質(zhì)是創(chuàng)建新的類 新類不僅具有基類的

3、特征,而且還可以添加新的特征,同時(shí)能夠繼續(xù)被繼承而派生出新的類學(xué)生學(xué)生大學(xué)生大學(xué)生5 5繼承的特點(diǎn)l 擴(kuò)充和完善原有程序以適應(yīng)新的需求。l 提高軟件開發(fā)的效率,增加程序的重用性,減少代碼和數(shù)據(jù)的冗余度。討論:討論:is a 和和has a的區(qū)別的區(qū)別6 6三種繼承關(guān)系學(xué)生學(xué)生大學(xué)生大學(xué)生單重繼承單重繼承軍校大學(xué)生軍校大學(xué)生多重繼承多重繼承學(xué)生學(xué)生軍人軍人學(xué)生學(xué)生大學(xué)生大學(xué)生多級(jí)繼承多級(jí)繼承天津大學(xué)天津大學(xué)大學(xué)生大學(xué)生混合繼承混合繼承ACBDEF7 76.2 基類和派生類基類和派生類 l 定義派生類的格式class 派生類名: virtual 繼承方式1 基類名1, virtual 繼承方式2

4、基類名2, 派生類類體 ; 派生類類體中未定義的成員函數(shù)的實(shí)現(xiàn) l 三種繼承方式 public(公有繼承) private(私有繼承,缺省繼承方式) protected(保護(hù)繼承)8 8回顧:成員的訪問權(quán)限回顧:成員的訪問權(quán)限class A public: int a;void f1(); private: int b;void f2(); protected:int c;void f3();A x;/x是什么?是什么?x.a=10;/是否可以?是否可以?x.f1();/是否可以?是否可以?x.b=20;/是否可以?是否可以?x.f2();/是否可以?是否可以?x.c=30;/是否可以?是否可

5、以?x.f3();/是否可以?是否可以?/成員函數(shù)定義成員函數(shù)定義void A:f1() b=20; /是否可以?是否可以?如果不考慮繼承,保護(hù)成員和私有成員的地位是一樣的。私有和保護(hù)成員只能被該類成員函數(shù)直接訪問。保護(hù)成員和私有成員的區(qū)別在于前者能被繼承。9 9public公有繼承方式公有繼承方式class A public: int a;void f1(); private:int b;void f2(); protected:int c;void f3();class B: public A int d;void f4();public: int e;void f5();討論:討論: B

6、 B有幾個(gè)成員?有幾個(gè)成員? 各是什么權(quán)限?各是什么權(quán)限?類類B中:中: 公有成員:公有成員:int a;void f1();int e;void f5();保護(hù)成員:保護(hù)成員:int c;void f3();私有成員:私有成員:int b;void f2();int d;void f4();1010說明:在公有繼承下,l 直接基類的公有成員和保護(hù)成員分別作為派生類中的公有成員和保護(hù)成員。l 直接基類的私有成員也會(huì)被繼承,但派生類不能直接訪問直接基類的私有成員。只能通過直接基類的公有成員函數(shù)和保護(hù)成員函數(shù)間接訪問它們。l 派生類的對(duì)象只能直接訪問直接基類的公有成員。void B:f5() a=

7、10; b=10; c=10; d=10; e=10; f2(); f3();void A:f3() b=10; B x;x.a=100; x.e=200;x.f1();1111private私有繼承方式私有繼承方式class A public: int a;void f1(); private:int b;void f2(); protected:int c;void f3();class B: private A int d;void f4();public: int e;void f5();直接基類的公有成員直接基類的公有成員和保護(hù)成員均作為派和保護(hù)成員均作為派生類的生類的私有成員私有成

8、員。類類B中:中:公有成員:公有成員:int e;void f5();私有成員:私有成員:int a;void f1();int c;void f3();int b;void f2();int d;void f4();私有繼承方式是默認(rèn)的繼承方式:私有繼承方式是默認(rèn)的繼承方式:class B:A1212protected保護(hù)繼承方式保護(hù)繼承方式class A public: int a;void f1(); private:int b;void f2(); protected:int c;void f3();class B: protected A int d;void f4();public

9、: int e;void f5();直接基類的公有成員和直接基類的公有成員和保護(hù)成員均作為派生類保護(hù)成員均作為派生類的的保護(hù)成員保護(hù)成員。類類B中:中:公有成員公有成員: int e;void f5();保護(hù)成員保護(hù)成員:int a;void f1();int c;void f3();私有成員私有成員:int d;void f4();int b;void f2();1313不可直接訪問不可直接訪問privateprivateprivate不可直接訪問不可直接訪問protectedprotectedprotected不可直接訪問不可直接訪問protectedpublicpublicprivate

10、protectedpublic基類特性基類特性派生類特性派生類特性繼承方式繼承方式不同繼承方式下基類與派生類的特性不同繼承方式下基類與派生類的特性 1414派生類對(duì)象的數(shù)據(jù)成員組成1515派生類本身數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)子對(duì)象m數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)子對(duì)象2數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外).子對(duì)象1數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)直接基類n數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外).直接基類2數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)直接基類1數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)例6.5 畫出下面程序中類C對(duì)象obj1的組成結(jié)構(gòu)圖 class C :public Bpublic: void f3(); protected:

11、static int j3; void g3(); private: int i3; ;int C:j3;class A public: int k1; void f1(); protected: static int j1; void g1(); private: int i1; void h1();int A:j1;class B :public Apublic: void f2(); protected: int j2; void g2(); private: static int i2; A a1,a2; void h2();int B:i2;1616Bj2Ai1k1A a1i1k1A

12、a2i1k1B的子對(duì)象的子對(duì)象a2的數(shù)據(jù)成員的數(shù)據(jù)成員C的的數(shù)數(shù)據(jù)據(jù)成成員員B的的數(shù)數(shù)據(jù)據(jù)成成員員B的子對(duì)象的子對(duì)象a1的數(shù)據(jù)成員的數(shù)據(jù)成員B的直接基類的直接基類A的數(shù)據(jù)成員的數(shù)據(jù)成員Ci317176.3 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù)派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) l 派生類構(gòu)造函數(shù)的一般形式派生類構(gòu)造函數(shù)的一般形式派生類構(gòu)造函數(shù)名(總參數(shù)表): 直接基類初始化表,子對(duì)象初始化表, 派生類自身數(shù)據(jù)成員初始化表 派生類構(gòu)造函數(shù)體 直接基類初始化表的形式為: 直接基類1構(gòu)造函數(shù) (參數(shù)表1), 直接基類2構(gòu)造函數(shù) (參數(shù)表2), 子對(duì)象初始化表形式為: 子對(duì)象名1(參數(shù)表1),子對(duì)象名2(參數(shù)表2),

13、派生類自身數(shù)據(jù)成員初始化表形式為: 數(shù)據(jù)成員名1(參數(shù)1),數(shù)據(jù)成員名2(參數(shù)2), 1818class A int x; public: A() x=0; /缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù) A( int k) x=k; ; class A int x; public: A() x=0; /數(shù)據(jù)成員初始化表數(shù)據(jù)成員初始化表 A( int k) : x(k) ; class B int a, b; public: B() a=2; b=5; B(int i, int j) a=i; b=j; ; class A int x; B bb; public: A() x=0; /子對(duì)象初始化表子對(duì)象初始化表

14、 A( int i, int j, int k): bb (i, j), x( k ) ; class B int a, b; public: B() a=2; b=5; B(int i, int j) a=i; b=j; ; class A : public B int x; B bb; public: A() x=0; /直接基類初始化表直接基類初始化表 A( int i1, int j1, int i, int j, int k): B(i1, j1), bb (i, j), x( k ) ; 1919各直接基類 派生類自身數(shù)據(jù)成員 各子對(duì)象(定義時(shí)的順序) (定義時(shí)的順序) l 派生類

15、構(gòu)造函數(shù)的執(zhí)行順序派生類構(gòu)造函數(shù)的執(zhí)行順序2020派生類本身數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)子對(duì)象1數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)子對(duì)象2數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外).子對(duì)象m數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)直接基類1數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)直接基類2數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外).直接基類n數(shù)據(jù)成員(除靜態(tài)數(shù)據(jù)成員外)P173 例例6.6 #include class Base public: Base() a=0; coutBase缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù)n; Base(int i)a=i;coutBase構(gòu)造函數(shù)構(gòu)造函數(shù)n; void print()couta=a,; int Geta()ret

16、urn a; private: int a; ;class Derived: public Base public: Derived()b=0; coutDerived缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù)n; Derived (int i, int j, int k): Base(i), Ba(j), b(k) cout“Derived 構(gòu)造函數(shù)構(gòu)造函數(shù)n”; void print() Base:print(); /調(diào)用基類調(diào)用基類Base的的print()函數(shù)函數(shù) coutb=b,Ba.a=Ba.Geta()endl; private: int b; Base Ba; /子對(duì)象或稱為內(nèi)嵌對(duì)象子對(duì)象或稱為

17、內(nèi)嵌對(duì)象 ; void main() Derived d1, d2(5,3,7); d1.print(); d2.print(); b 0Base Ba a 0Base a 0d1組成結(jié)構(gòu)圖組成結(jié)構(gòu)圖b 7Base Ba a 3Base a 5d2組成結(jié)構(gòu)圖組成結(jié)構(gòu)圖程序輸出結(jié)果程序輸出結(jié)果 :Base缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù) Base缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù) Derived缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù) Base構(gòu)造函數(shù)構(gòu)造函數(shù) Base構(gòu)造函數(shù)構(gòu)造函數(shù) Derived構(gòu)造函數(shù)構(gòu)造函數(shù) a=0,b=0,Ba.a=0a=5,b=7,Ba.a=3 2121l 派生類析構(gòu)函數(shù)派生類析構(gòu)函數(shù) 派生類析構(gòu)函

18、數(shù)的形式無特殊之處,不必顯式地調(diào)用各直接基類 各子對(duì)象相應(yīng)類的析構(gòu)函數(shù),這些操作是由系統(tǒng)自動(dòng)完成的 執(zhí)行各析構(gòu)函數(shù)的順序恰好與執(zhí)行各構(gòu)造函數(shù)的順序相反。22222323直接基類直接基類1數(shù)據(jù)成員數(shù)據(jù)成員直接基類直接基類2數(shù)據(jù)成員數(shù)據(jù)成員.直接基類直接基類n數(shù)據(jù)成員數(shù)據(jù)成員子對(duì)象子對(duì)象1數(shù)據(jù)成員數(shù)據(jù)成員子對(duì)象子對(duì)象2數(shù)據(jù)成員數(shù)據(jù)成員.子對(duì)象子對(duì)象m數(shù)據(jù)成員數(shù)據(jù)成員派生類本身數(shù)據(jù)成員派生類本身數(shù)據(jù)成員各直接基類 派生類自身數(shù)據(jù)成員 各子對(duì)象(定義時(shí)的順序) (定義時(shí)的順序) 單重繼承派生類析構(gòu)函數(shù)示例單重繼承派生類析構(gòu)函數(shù)示例 #include class Base public: Base()

19、a=0; Base(int i) a=i; void print()couta=a,; int Geta()return a; Base()coutBase(a=a)析構(gòu)函數(shù)析構(gòu)函數(shù)n; private: int a; ; class Derived: public Basepublic: Derived()b=0; Derived(int i,int j,int k):Base(i),Ba(j)b=k; Derived() coutDerived(b=b)析構(gòu)函數(shù)析構(gòu)函數(shù)n; void print() Base:print(); coutb=b,Ba.a=Ba.Geta()endl; pri

20、vate: int b; Base Ba; ; void main() Derived d1,d2(5, 3, 7); d1.print(); d2.print(); 程序輸出結(jié)果程序輸出結(jié)果 :a=0,b=0,Ba.a=0 a=5,b=7,Ba.a=3 Derived(b=7)析構(gòu)函數(shù)析構(gòu)函數(shù) Base(a=3)析構(gòu)函數(shù)析構(gòu)函數(shù) Base(a=5)析構(gòu)函數(shù)析構(gòu)函數(shù) Derived(b=0)析構(gòu)函數(shù)析構(gòu)函數(shù) Base(a=0)析構(gòu)函數(shù)析構(gòu)函數(shù) Base(a=0)析構(gòu)函數(shù)析構(gòu)函數(shù) 2424例6.10 多重繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)示例 #include class base1 int i1; pu

21、blic: base1(int i) i1=i; coutbase1(i1=i1)構(gòu)造函數(shù)構(gòu)造函數(shù)n; base1() coutbase1(i1=i1)析構(gòu)函數(shù)析構(gòu)函數(shù)n; ; class base2 int i2; public: base2(int i) i2=i; coutbase2(i2=i2)構(gòu)造函數(shù)構(gòu)造函數(shù)n; base2() coutbase2(i2=i2)析構(gòu)函數(shù)析構(gòu)函數(shù)n; ;class derived: public base1, public base2base1 b1; base2 b2; int i3; public: derived(int j1, int j2,

22、int j3, int j4, int j5) :base2(j2), base1(j1), b2(j3), b1(j4) i3=j5; coutderived構(gòu)造函數(shù)構(gòu)造函數(shù)n; derived() coutderived析構(gòu)函數(shù)析構(gòu)函數(shù)n; ; void main() derived d(5,4,3,2,1); 程序輸出結(jié)果程序輸出結(jié)果 : base1(i1=5)構(gòu)造函數(shù)構(gòu)造函數(shù) base2(i2=4)構(gòu)造函數(shù)構(gòu)造函數(shù) base1(i1=2)構(gòu)造函數(shù)構(gòu)造函數(shù) base2(i2=3)構(gòu)造函數(shù)構(gòu)造函數(shù) derived構(gòu)造函數(shù)構(gòu)造函數(shù) derived析構(gòu)函數(shù)析構(gòu)函數(shù) base2(i2=3)析構(gòu)函

23、數(shù)析構(gòu)函數(shù) base1(i1=2)析構(gòu)函數(shù)析構(gòu)函數(shù) base2(i2=4)析構(gòu)函數(shù)析構(gòu)函數(shù) base1(i1=5)析構(gòu)函數(shù)析構(gòu)函數(shù) 25256.3.3 虛基類虛基類 l 多重繼承中的二義性問題 派生類對(duì)象通過不同繼承路徑而得到兩個(gè)或兩個(gè)以上同名成員 的問題。struct A void f1() coutXixixin; ; struct B void f1() cout“Hahahan; ; struct C:public A, public B ; 聲明:C x;調(diào)用x.f1()會(huì)發(fā)生什么? 解決方法一:使用成員名限定來消除二義性。如調(diào)用x.B:f1(); 方法二:成員函數(shù)重定義struct

24、 C:public A, public B void f1() cout“Gegegen”; /B:f1(); ; /成員函數(shù)重定義2626l 多級(jí)繼承中的二義性問題 class A public: int na; void fun() coutfun() of A(na=na)n; ; class B: public A public: int nb; ; class C: public A public: int nc; ; class D: public B, public C public: int nd; ; 繼承關(guān)系繼承關(guān)系DABACd d的組成結(jié)構(gòu)圖的組成結(jié)構(gòu)圖BA nanbCA

25、 nancndvoid main() D d; d.B:na=2; d.C:na=3; coutd.B:A:na=d.B:na; coutnd.C:A:na=d.C:na; coutendl; d.B:fun(); d.C:fun(); 程序輸出結(jié)果程序輸出結(jié)果 :d.B:A:na=2d.C:A:na=3 fun() of A(na=2) fun() of A(na=3) 2727l 虛基類:不希望結(jié)果具有二義性;希望只有一份間接基類的成員被繼承下來 。則可以把間接基類轉(zhuǎn)為虛基類class A public: int na; void fun() coutfun() of A(na=na)n;

26、 ; class B: virtual public A public: int nb; ; class C: virtual public A public: int nc; ; class D: public B, public C public: int nd; ; d d的組成結(jié)構(gòu)圖的組成結(jié)構(gòu)圖BnbCA nancndvoid main() D d; d.na=3; coutd.nad.naendl; d.fun(); 程序輸出結(jié)果程序輸出結(jié)果 :d.na=3fun() of A(na=3) 2828l 虛基類的構(gòu)造函數(shù)和析構(gòu)函數(shù) 虛基類的數(shù)據(jù)成員只被初始化一次 。 在一個(gè)基類初始化表

27、中,若同時(shí)出現(xiàn)對(duì)虛基類和非虛基類構(gòu)造函數(shù)的調(diào)用,則虛基類的構(gòu)造函數(shù)優(yōu)先執(zhí)行。若同時(shí)包括多個(gè)虛基類,則按它們在定義派生類時(shí)說明的順序調(diào)用各虛基類的構(gòu)造函數(shù)。 p248例8.11 虛基類構(gòu)造、析構(gòu)函數(shù)調(diào)用示例 2929class A public: A() coutA classn; A()coutclass An; ; class D1 public: D1() cout“D1 classn; D1()coutclass D1n; ; class D2: public D1, virtual public A public: D2() cout“D2 classn; D2()coutclass

28、D2n; ; class D3: public D1, virtual public A public: D3() cout“D3 classn; D3()coutclass D3n; ; class D4: public D2, virtual public D3 public: D4() cout“D4classn; D4()coutclass D4n; ; void main() D4 d;D4D1D2AD3程序輸出結(jié)果 :A classD1 classD3 classD1 classD2 classD4 classclass D4class D2class D1class D3clas

29、s D1class A30306.4 賦值兼容規(guī)則 class Aint m, n;class B ;main()A x;B y;/什么情況下可以?什么情況下可以?x=y;l 不同類型的對(duì)象之間的轉(zhuǎn)換結(jié)論:1、B必需是A的派生類。2、B對(duì)A必需是公有繼承的3131賦值兼容規(guī)則 l 賦值兼容規(guī)則 賦值兼容規(guī)則:是指在公有繼承的前提下,基類對(duì)象與公有派生類對(duì)象之間的自動(dòng)類型轉(zhuǎn)換和賦值的規(guī)則。 規(guī)則只對(duì)公有繼承有效。如果對(duì)私有繼承或保護(hù)繼承使用,則會(huì)出現(xiàn)語法錯(cuò)誤。 由于派生類中包含從基類繼承的成員,所以可以將派生類對(duì)象賦值給基類對(duì)象,在需要基類對(duì)象的任何時(shí)候都可以其用派生類對(duì)象代替。 賦值兼容規(guī)則主

30、要包括兩個(gè)內(nèi)容:基類對(duì)象與派生類對(duì)象之間的關(guān)系;基類對(duì)象的指針與派生類對(duì)象的指針之間的關(guān)系。3232基類對(duì)象與派生類對(duì)象之間的關(guān)系1.可以用派生類對(duì)象給基類對(duì)象賦值,反之不行 。2.可以用派生類對(duì)象初始化基類對(duì)象或基類的引用。 如果函數(shù)的形參是基類對(duì)象或基類對(duì)象的引用,則對(duì)應(yīng)的實(shí)參可以是派生類的對(duì)象。3.可以把派生類對(duì)象的地址賦給指向其基類對(duì)象的指針變量。反之不行。4. 可以把派生類對(duì)象的指針賦值給基類對(duì)象的指針。反之則錯(cuò)。base b;derived d;b=d;d=b; /錯(cuò)derived d;base b(d);base &rb=d;base b, *pb;derived d, *pd;pb=&d;pd=&b; /錯(cuò)base *pb;derived d, *pd=&d;pb=pd;pd=pb; /錯(cuò)3333#include class A int x;public: A(int x1)x=x1; void print() coutx=x ; ;class B: public A int y;public: B(int

溫馨提示

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

評(píng)論

0/150

提交評(píng)論