第9章 靜態(tài)與友元_第1頁(yè)
第9章 靜態(tài)與友元_第2頁(yè)
第9章 靜態(tài)與友元_第3頁(yè)
第9章 靜態(tài)與友元_第4頁(yè)
第9章 靜態(tài)與友元_第5頁(yè)
已閱讀5頁(yè),還剩36頁(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)介

第九章靜態(tài)與友元

9.1靜態(tài)

9.2友元

9.3案例實(shí)戰(zhàn)第一節(jié):靜態(tài)9.1.靜態(tài)共享單車、共享汽車、共享充電寶等共享經(jīng)濟(jì)產(chǎn)品層出不窮,給大家?guī)?lái)很多方便,節(jié)約了社會(huì)資源。類的對(duì)象數(shù)據(jù)成員是獨(dú)立的,不同對(duì)象的數(shù)據(jù)成員各有其值,互不相干。如果要共享某一個(gè)數(shù)據(jù)成員,該如何實(shí)現(xiàn)呢?問(wèn)題9.1.靜態(tài)C++靜態(tài)成員作為類的一種成員,可以實(shí)現(xiàn)多個(gè)對(duì)象之間的數(shù)據(jù)共享,而且使用靜態(tài)成員還不會(huì)破壞信息隱蔽的原則,保證了程序的安全性。靜態(tài)成員包括靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。9.1.1靜態(tài)數(shù)據(jù)成員類的普通數(shù)據(jù)成員在類的每一個(gè)對(duì)象中都有自己的一個(gè)存儲(chǔ)空間,可以存儲(chǔ)不同的數(shù)值。靜態(tài)數(shù)據(jù)成員是類數(shù)據(jù)成員的一種特例,每個(gè)類只為靜態(tài)數(shù)據(jù)成員分配一個(gè)存儲(chǔ)空間,它由該類的所有對(duì)象共同擁有,從而實(shí)現(xiàn)了同一個(gè)類不同對(duì)象之間的數(shù)據(jù)共享。靜態(tài)數(shù)據(jù)成員具有靜態(tài)生存期,從程序運(yùn)行時(shí)存在,直到程序運(yùn)行結(jié)束。聲明靜態(tài)數(shù)據(jù)成員格式:static數(shù)據(jù)類型

靜態(tài)數(shù)據(jù)成員名;9.1.1靜態(tài)數(shù)據(jù)成員注意:靜態(tài)數(shù)據(jù)成員要求在類內(nèi)聲明,類外初始化。靜態(tài)數(shù)據(jù)成員初始化格式:

數(shù)據(jù)類型類名::靜態(tài)數(shù)據(jù)成員名=初始值;靜態(tài)成員如果沒(méi)有對(duì)其進(jìn)行初始化,則自動(dòng)賦初值為0。靜態(tài)數(shù)據(jù)成員訪問(wèn)方式:在類外通過(guò)類名進(jìn)行訪問(wèn),也允許用對(duì)象名進(jìn)行訪問(wèn)。靜態(tài)數(shù)據(jù)成員的訪問(wèn)形式:

類名::靜態(tài)數(shù)據(jù)成員名;對(duì)象名.靜態(tài)數(shù)據(jù)成員名注意:靜態(tài)數(shù)據(jù)成員受訪問(wèn)權(quán)限控制。9.1.1靜態(tài)數(shù)據(jù)成員【例如】定義一個(gè)矩形類Rectangle,實(shí)現(xiàn)計(jì)算、顯示矩形面積和統(tǒng)計(jì)矩形個(gè)數(shù)的功能。#include<iostream>usingnamespacestd;classRectangle{public: Rectangle(int=0,int=0); voidShow(); intArea();

staticintcount; //聲明靜態(tài)數(shù)據(jù)成員countprivate: intlength; intwidth;};

intRectangle::count=0; //初始化靜態(tài)數(shù)據(jù)成員count9.1.1靜態(tài)數(shù)據(jù)成員Rectangle::Rectangle(intl,intw):length(l),width(w){ count++; //靜態(tài)數(shù)據(jù)成員count計(jì)數(shù)}intRectangle::Area(){ return(length*width);}voidRectangle::Show(){ cout<<"length="<<length<<""; cout<<"width="<<width<<""; cout<<"Area="<<Area()<<endl;}9.1.1靜態(tài)數(shù)據(jù)成員intmain(){ Rectanglerect1(3,3); rect1.Show();

cout<<"count="<<Rectangle::count<<endl; Rectanglerect2(3,7); rect2.Show(); cout<<"count="<<Rectangle::count<<endl; Rectanglerect3(5,5); rect3.Show();

cout<<"count="<<rect3.count<<endl; return0;}運(yùn)行結(jié)果:length=3width=3Area=9count=1length=3width=7Area=21count=2length=5width=5Area=25count=39.1.2靜態(tài)成員函數(shù)

通常當(dāng)我們定義類的數(shù)據(jù)成員時(shí),都會(huì)將訪問(wèn)權(quán)限定義為私有,同時(shí)靜態(tài)數(shù)據(jù)成員也受訪問(wèn)權(quán)限的控制。如果將靜態(tài)數(shù)據(jù)成員定義為私有的,就不能在類外進(jìn)行訪問(wèn)。

為了解決這個(gè)問(wèn)題,通常會(huì)定義對(duì)應(yīng)的公有的靜態(tài)成員函數(shù)來(lái)訪問(wèn)私有的靜態(tài)數(shù)據(jù)成員。問(wèn)題9.1.2靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)作用:定義公有靜態(tài)成員函數(shù)來(lái)訪問(wèn)私有的靜態(tài)數(shù)據(jù)成員。聲明靜態(tài)成員函數(shù)的格式:static函數(shù)類型靜態(tài)成員函數(shù)名(參數(shù)表);定義靜態(tài)成員函數(shù)的格式:

函數(shù)類型類名::靜態(tài)成員函數(shù)名(參數(shù)表)

{}靜態(tài)成員函數(shù)訪問(wèn)格式:

類名::靜態(tài)成員函數(shù)名(參數(shù)表);

9.1.2靜態(tài)成員函數(shù)【例題】定義一個(gè)學(xué)生Student類,其中包括描述學(xué)生信息的學(xué)號(hào)、姓名、性別和操作系統(tǒng)課程的成績(jī)。需要完成學(xué)生信息的輸入、顯示、計(jì)算操作系統(tǒng)課程平均分的功能。classStudent{public:Student(string="",string="",char='f',double=0); voidInput(); voidShow();

staticdoubleAverage();//靜態(tài)成員函數(shù),計(jì)算平均分 ~Student(){}private: stringnum;stringname;charsex; doublescore; //操作系統(tǒng)成績(jī)

staticintcount; //靜態(tài)數(shù)據(jù)成員,記錄學(xué)生人數(shù)

staticdoublesum; //靜態(tài)數(shù)據(jù)成員,求學(xué)生總分};intStudent::count=0; //初始化靜態(tài)數(shù)據(jù)成員doubleStudent::sum=0;9.1.2靜態(tài)成員函數(shù)Student::Student(stringn1,stringn2,charch,doubles):num(n1),name(n2),sex(ch),score(s){}voidStudent::Input(){cout<<"num=";cin>>num; cout<<"name=";cin>>name; cout<<"sex=";cin>>sex; cout<<"score=";cin>>score;

count++; //學(xué)生計(jì)數(shù)

sum+=score; //累加成績(jī)}voidStudent::Show(){cout<<num<<setw(N)<<name<<setw(N); if(sex=='f'||sex=='F')cout<<"female"; elsecout<<"male";cout<<setw(N)<<score<<endl;}doubleStudent::Average() //求平均分的靜態(tài)成員函數(shù){returnsum/count;}9.1.2靜態(tài)成員函數(shù)intmain(){Studentstu[N];intn,i; cout<<"inputstudentnumber:"; cin>>n; for(i=0;i<n;i++) {cout<<"number"<<i+1<<":"<<endl; stu[i].Input(); } cout<<"num"<<setw(N)<<"name"<<setw(N)<<"sex"<<setw(N)<<"score"<<endl;

for(i=0;i<n;i++)stu[i].Show();

cout<<"average="<<Student::Average()<<endl; return0;}9.1.2靜態(tài)成員函數(shù)案例總結(jié):學(xué)生人數(shù)和成績(jī)總分定義為私有靜態(tài)數(shù)據(jù)成員,實(shí)現(xiàn)了類對(duì)象共有。公有靜態(tài)成員函數(shù)average實(shí)現(xiàn)了對(duì)私有靜態(tài)數(shù)據(jù)成員的訪問(wèn),即總分除以人數(shù)得到平均分。在類的外部,這里就是主函數(shù),直接通過(guò)類名作用域限定符調(diào)用average函數(shù),間接實(shí)現(xiàn)了對(duì)私有靜態(tài)成員count和sum的訪問(wèn)。公有靜態(tài)成員函數(shù)把對(duì)私有靜態(tài)成員的操作實(shí)現(xiàn)了封裝,進(jìn)行統(tǒng)一處理,程序的邏輯性更強(qiáng),安全性更高。9.1.2靜態(tài)成員函數(shù)課堂總結(jié):(1)靜態(tài)成員受訪問(wèn)權(quán)限的控制。(2)靜態(tài)成員的訪問(wèn)方式有兩種:通過(guò)類名或通過(guò)對(duì)象名。(3)靜態(tài)數(shù)據(jù)成員的初始化必須在類外,不能通過(guò)構(gòu)造函數(shù)進(jìn)行初始化。(4)靜態(tài)成員函數(shù)的作用就是為了訪問(wèn)私有的靜態(tài)數(shù)據(jù)成員,盡量不去訪問(wèn)非靜態(tài)數(shù)據(jù)成員。(5)靜態(tài)成員函數(shù)沒(méi)有this指針,因?yàn)樗粚儆谌魏我粋€(gè)對(duì)象。第二節(jié):友元9.2.1友元函數(shù)類具有封裝和信息隱蔽的特性,只有類的成員函數(shù)才能訪問(wèn)類的私有成員,其他函數(shù)無(wú)權(quán)訪問(wèn)。為提高運(yùn)行效率,有時(shí)確實(shí)需要非成員函數(shù)能夠訪問(wèn)類的私有成員。解決訪問(wèn)類的私有成員的方法:(1)定義公有成員函數(shù)訪問(wèn)私有數(shù)據(jù)成員,通過(guò)類外調(diào)用公有成員函數(shù)達(dá)到目的;(2)使用友元機(jī)制。友元分為友元函數(shù)和友元類。9.2.1友元函數(shù)1.將普通函數(shù)聲明為友元函數(shù)聲明友元函數(shù)時(shí),用關(guān)鍵字friend進(jìn)行說(shuō)明,可以訪問(wèn)類的私有成員。普通函數(shù)聲明為友元函數(shù)的格式:friend函數(shù)類型友元函數(shù)名(參數(shù)表);

說(shuō)明:(1)友元函數(shù)為非成員函數(shù),一般在類中進(jìn)行聲明,在類外進(jìn)行定義;(2)友元函數(shù)的聲明可以放在類聲明中的任何位置,即不受訪問(wèn)權(quán)限的控制;(3)友元函數(shù)可以通過(guò)對(duì)象名訪問(wèn)類的所有成員,包括私有成員。9.2.1友元函數(shù)【程序舉例】定義一個(gè)點(diǎn)類Point,并求出兩點(diǎn)間的距離#include<iostream>#include<cmath>usingnamespacestd;classPoint{public: Point(int=0,int=0);//帶默認(rèn)值的構(gòu)造函數(shù) ~Point(){}//析構(gòu)函數(shù) voidShow();//顯示函數(shù)

frienddoubleDistance(Pointp1,Pointp2);//聲明為友元private: intx,y;};9.2.1友元函數(shù)Point::Point(intx1,inty1):x(x1),y(y1){}voidPoint::Show(){cout<<"("<<x<<","<<y<<")"<<endl;}doubleDistance(Pointp1,Pointp2)//求距離

{ returnsqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));}intmain(){Pointp1(3,4),p2; p1.Show();p2.Show(); cout<<"Distance:"<<Distance(p1,p2)<<endl; return0;}運(yùn)行結(jié)果:(3,4)(0,0)Distance:59.2.1友元函數(shù)2.將成員函數(shù)聲明為友元函數(shù)成員函數(shù)聲明為友元函數(shù)的格式:friend函數(shù)類型類名::友元函數(shù)名(參數(shù)表);如果友元函數(shù)是一個(gè)類的成員函數(shù),則在定義友元函數(shù)時(shí)要加上其所在類的類名。訪問(wèn)友元函數(shù)時(shí),在友元函數(shù)的前面加上自己的對(duì)象名即可。如果同一函數(shù)需要訪問(wèn)不同類的對(duì)象,那么最適用的方法是使它成為這些不同類的友元,關(guān)鍵字friend在函數(shù)定義中不能出現(xiàn)。9.2.1友元函數(shù)【程序舉例】定義一個(gè)學(xué)生類Student和一個(gè)教師類Teacher。在教師類中定義一個(gè)能修改學(xué)生成績(jī)的成員函數(shù)。(1)定義學(xué)生類Student。classStudent{public: Student(string="",string="",double=0); ~Student(){} voidShow();private: stringnum;stringname;doublescore;};Student::Student(stringn1,stringn2,doubles):num(n1),name(n2),score(s){}voidStudent::Show(){cout<<setw(8)<<"num"<<setw(8)<<"name"<<setw(8)<<"score"<<endl; cout<<setw(8)<<num<<setw(8)<<name<<setw(8)<<score<<endl;}9.2.1友元函數(shù)(2)定義教師類Teacher,并在主函數(shù)中定義對(duì)象進(jìn)行測(cè)試。

#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classTeacher{public: Teacher(string="",string=""); ~Teacher(){} voidShow_Teacher();private: stringnum;stringname;};Teacher::Teacher(stringn1,stringn2):num(n1),name(n2){}voidTeacher::Show_Teacher(){cout<<setw(8)<<"num"<<setw(8)<<"name"<<endl; cout<<setw(8)<<num<<setw(8)<<name<<endl;}9.2.1友元函數(shù)(3)在教師類中添加修改學(xué)生成績(jī)的成員函數(shù)。

#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classStudent;//類的提前聲明classTeacher{public:

voidSetScore(Student&,double);//修改指定學(xué)生成績(jī) //希望能更新數(shù)據(jù),所以學(xué)生對(duì)象必須定義為引用或者指針。

……};classStudent{……

friendvoidTeacher::SetScore(Student&stu,doubles);//聲明為友元函數(shù)};voidTeacher::SetScore(Student&stu,doubles)//修改指定學(xué)生成績(jī){

stu.score=s;}//因?yàn)槭怯言瘮?shù),可以直接引用私有數(shù)據(jù)成員stu.score9.2.1友元函數(shù)需要說(shuō)明的幾點(diǎn):(1)關(guān)于提前聲明:

Teacher類中聲明的成員函數(shù)SetScore(Student&,double)第一個(gè)形參是Student類對(duì)象的引用,所以要在Teacher類前加上類Student的提前聲明。(2)關(guān)于成員函數(shù)SetScore(Student&,double):

成員函數(shù)的形參中必須給出明確的Student類對(duì)象,并更新原有的成績(jī)。所以,將形參定義為引用或指針。(3)在Teacher類的修改成績(jī)的成員函數(shù)SetScore(Student&,double)中,訪問(wèn)到了Student類的私有數(shù)據(jù)成員score,所以將它聲明為Student類的友元函數(shù)。9.2.2友元類3.友元類C++中,可將整個(gè)類聲明為另一個(gè)類的友元,稱為友元類。友元類的聲明格式:friendclass友元類名;說(shuō)明:(1)友元類的聲明同樣可以在類聲明中的任何位置;(2)友元類的所有成員函數(shù)將都成為友元函數(shù)。9.2.2友元類【程序舉例】定義一個(gè)學(xué)生類Student和一個(gè)教師類Teacher。在教師類中定義一個(gè)能修改學(xué)生成績(jī)的成員函數(shù)。#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classStudent;//類的提前聲明classTeacher{public: Teacher(string="",string=""); ~Teacher(){} voidShow_Teacher(); voidSetScore(Student&,double);//修改指定學(xué)生成績(jī)private: stringnum; stringname;};9.2.2友元類classStudent{public: Student(string="",string="",double=0); ~Student(){} voidShow_Student();

friendclassTeacher;//聲明類Teacher為友元類private: stringnum; stringname; doublescore;};voidTeacher::SetScore(Student&stu,doubles)//修改指定學(xué)生成績(jī){

stu.score=s;//直接引用私有學(xué)生對(duì)象中的私有數(shù)據(jù)}9.2.2友元類需要注意:(1)友元關(guān)系具有單向性。如果聲明類A是類B的友元,則類A的所有成員

函數(shù)都將變成友元函數(shù),都可以訪問(wèn)類B的所有成員,但類B的成員函數(shù)卻不能訪問(wèn)類A的私有和保護(hù)成員。(2)友元關(guān)系不具有傳遞性。如果類A是類B的友元,類B是類C的友元,

類C和類A之間如果沒(méi)有聲明,就沒(méi)有任何友元關(guān)系,不能進(jìn)行數(shù)據(jù)共享。(3)友元的提出方便了程序的編寫(xiě),但是卻破壞了數(shù)據(jù)的封裝和隱蔽,應(yīng)該盡量減少友元的使用。第三節(jié):案例實(shí)戰(zhàn)9.3.1案例實(shí)戰(zhàn)酒店管理系統(tǒng),要求定義一個(gè)酒店類,客人類,客人類為酒店類的友元類,可以直接獲取酒店基本信息,實(shí)現(xiàn)客人的入住添加、查找、修改、刪除和瀏覽功能。9.3.1案例實(shí)戰(zhàn)案例分析(1)定義客人類。通常客人信息包括:編號(hào),姓名,房間號(hào)和費(fèi)用以及統(tǒng)計(jì)酒店總收入、總?cè)藬?shù)。常用的基本操作包括:初始化訪客入住信息,獲取訪客編號(hào),姓名,房間號(hào),房費(fèi),酒店總?cè)藬?shù),總費(fèi)用信息,增加總?cè)藬?shù)費(fèi)用,減少總?cè)藬?shù)和顯示房客信息???cè)藬?shù)、總費(fèi)用聲明為靜態(tài)成員,修改總?cè)藬?shù)、費(fèi)用,獲取總?cè)藬?shù)、總費(fèi)用為靜態(tài)函數(shù)。(2)定義酒店類。酒店信息包括:酒店名稱和房間類別,基本操作初始化酒店名稱,聲明客人類為酒店的友元類,客人類的成員函數(shù)可以直接訪問(wèn)酒店的名稱和房間類別信息。(3)定義管理函數(shù)。定義管理函數(shù),如用戶界面函數(shù)實(shí)現(xiàn)主界面,輸入操作的功能編號(hào);檢測(cè)客人e的房間號(hào)狀態(tài)函數(shù),檢測(cè)客人e的編號(hào)狀態(tài),添加房客,刪除房客信息,查找房客和更新房客信息操作。(4)定義主程序。初始化酒店對(duì)象,客人對(duì)象,循環(huán)調(diào)用用戶界面函數(shù),根據(jù)輸入編號(hào)調(diào)用各種管理函數(shù)。程序代碼#include<iostream>#include<string>#include<iomanip>#defineM100//房客最大人數(shù)usingnamespacestd;//**********客人類**********classHotal;//前置聲明classGuest{private: intNum;//客人編號(hào); stringName;//姓名; intRoom;//房間號(hào); intfee;//費(fèi)用; staticdoubleSum;//總收入; staticintCount;//總?cè)藬?shù);public: Guest(int=0,string="",int=0,int=0);//初始化訪客入住信息:編號(hào)、姓名、房間號(hào)和費(fèi)用 staticdoubleSumfee();

//靜態(tài)成員函數(shù),計(jì)算總收入; staticintpep();

//靜態(tài)成員函數(shù),計(jì)算總?cè)藬?shù); voidshow(Hotalh);

//顯示房客信息 voidsetName();

//設(shè)置姓名 voidsetFee();

//設(shè)置房費(fèi) intgetNum(){returnNum;}

//獲取客人編號(hào) stringgetName(){returnName;}

//獲取客人姓名 intgetRoom(){returnRoom;}

//獲取房間號(hào) intgetFee(){returnfee;}//獲取房費(fèi) voidtotal_add();

//修改靜態(tài)成員:總?cè)藬?shù),總費(fèi)用 voidtotal_sub();

//修改靜態(tài)成員:總?cè)藬?shù),總費(fèi)用};//初始化靜態(tài)數(shù)據(jù)成員intGuest::Count=0;doubleGuest::Sum=0;//***********酒店類*********classHota{public: Hotal(string="");private: stringHotalName;//酒店名稱 stringRoomType[3];//房間類別 friendclassGuest;//定義友元類};//**********定義各種管理函數(shù)**********intmenu();//用戶界面函數(shù)intVaild_room(Guest*e,introom);//檢測(cè)客人e的房間號(hào)狀態(tài)intVaild_Num(Guest*e,intnum);//檢測(cè)客人e的編號(hào)狀態(tài)voidaddGuest(Guest*e);//添加房客voiddeleteGuest(Guest*e,Hotalh);//刪除房客信息Guest&searchGuest(Guest*e);//查找房客voidupdateGuest(Guest*e);//更新房客信息//主程序intmain(){ Guestg[M]; Hotalh("夏季假日酒店"); while(1){ switch(menu()){ case1:addGuest(g); break; case2:{ Guestg1=searchGuest(g); g1.show(h); break; } case3:updateGuest(g); break; case4:deleteGuest(g,h); break; case5:cout<<"總?cè)藬?shù):"<<Guest::pep()<<endl; break; case6:cout<<"總費(fèi)用:"<<Guest::Sumfee()<<endl; break; case0: return0; default: cout<<"輸出有誤,請(qǐng)重新選擇!"<<endl; } } return0;}//酒店類的實(shí)現(xiàn)--略//客人類的實(shí)現(xiàn)--略//管理類函數(shù)的實(shí)現(xiàn)-部分intmenu()//用戶界面函數(shù){ cout<<"**************************************************"<<endl; cout<<"**"<<endl; cout<<"*歡迎使用房客信息管理系統(tǒng)*\n";cout<<"**"<<endl; cout<<"*1.添加房客信息2.查詢房客信息*"<<endl; cout<<"*3.修改房客信息4.刪除房客信息*"<<endl; cout<<"*5.顯示所有房客信息6.計(jì)算總收入*"<<endl; cout<<"*0.退出系統(tǒng)

溫馨提示

  • 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)論