面向对象程序设计复习题汇总_第1页
面向对象程序设计复习题汇总_第2页
面向对象程序设计复习题汇总_第3页
面向对象程序设计复习题汇总_第4页
面向对象程序设计复习题汇总_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计C+复习资料与答案2010年 3月第一、二、六、七章习题一、选择题1、系统约定C+源程序文件名的缺省的扩展名为()A、bccB、c+C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、int D、无4、对于C+的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、i

2、nt *p=new int(10);B、int *p=new int10C、int *p=new int;D、int *p=new int40(0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:( )A、name3=a;、name=”lin”;、name=new char5; 、coutname3;7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:()A、name3=q;、name=”lin”;、name=new char5; 、name=new char(q);8、假设已经定义:const

3、char *name=”chen”;, 下面的语句中错误的是:()A、name3=q;、name=”lin”;、name=new char5; 、name=new char(q);9、下面的类型声明中正确的是:( )A、int &a4;B、int &*p;C、int &qD、int i,*p=&i;10、假设定义了函数模板( )template T max(T x,T y) return(xy)?x:y; 并定义了int i;char c;错误的调用语句是:( )A、max(i,i)B、max(c,c)C、max(int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可

4、重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int xa;cinx;则编译器认为()A、说明语句int xa错B、二个语句都错C、语句cinx 错D、二个语句正确,没有语法错13、设有语句:void f(int a10,int &x);int y10,*py=y,n;则对函数f的正确调用语句是()A、f(py10,n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C+中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y) (2) int f(int a,float

5、 b) (3) int f(int i,int j) (4) float k(int x) 是重载函数。A、4个全部 B、1和2 C、2和3 D、3和416、使用myFile.open(“Sales.dat”,ios:app);语句打开文件Sales.dat后,则()A、使输出追加到文件尾部B、打开一个文件进行读操作C、打开一个文件进行读和写操作D、文件以二进制方式打开,默认时为文本文件二、填空题1、面向对象的程序设计有四大特征,它们是抽象、封装、 、 。2、结构体类型中的数据和成员函数默认类型为。3、C+要求为每个函数建立原型,以说明函数的名称、参数的和,以及函数返回值。4、在函数说明前加关

6、键字“inline”,则该函数被声明为函数,其引入的目的是为了消除函数调用时的开销,以提高运行速度。5、引用变量与被引用变量占有 内存单元6、 运算符能够用于访问当前作用域内与局部变量同名的全局变量。7、#include using namespace std;void s(int a,int &b)int t=a;a=b;b=t;int main(void)int x=500,y=1000;coutxtyn;s(x,y);coutxtyn;return 0;程序的第一行输出为,第二行输出为。8、#include using namespace std;int main(void)for(in

7、t a=1,b=1;a=8) break;if(b%2=1)b+=7;continue;b-=3; cout”a=”an”b=”bn;return 0;程序输出结果是a= ,b= 。9、#include using namespace std;int x=100;int main(void)int x=200;x+=:x; int x=500;:x+=x; coutxn;cout:xn; return 0;程序的第一行输出为,第二行输出为。10、#includeusing namespace std;void f(float x=5, int y=16, char z=C);int main(

8、 ) float a=1.6; int b=2; char c=D;f();f(a);f(a,b); f(a,b,c); return 0;void f(float x, int y, char z) cout“x=”x“ y=”y“ z=”zendl; 程序的第二行输出为,第三行输出为。11、以下程序的输出结果是 。#include using namespace std;char a=“ABCDEFGHI”;char &f(int);int main() f(6)=X; coutaendl; return 0;char &f(int i) return ai;12、如果C+程序中使用了:c

9、out、strcpy,则必须在程序首部包含文件和。13、#include using namespace std;#include int main()int i=7890; coutsetw(6)iendl; coutiendl;return 0;程序的第一行输出为,第二行输出为。14、#include using namespace std;int main()int i=100;cout.setf(ios:hex);couti”t”;couti”t”;cout.setf(ios:dec);couti”n”;return 0;以上程序运行的结果是第三章 类和对象一、选择题1、()不是构造函

10、数的特征。 A、构造函数的函数名与类名相同; B、构造函数可以重载; C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。2、下列关于构造函数的描述中,()是正确的。 A、构造函数可以设置缺省参数; B、构造函数可以被继承; C、构造函数可以对静态数据成员进行初始化; D、构造函数可以说明为虚函数;3、()是析构函数的特征。 A、析构函数可以有一个或多个参数; B、析构函数名与类名不同; C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数;4、定义析构函数时,应该注意()。 A、其函数名与类名完全相同; B、函数返回类型是void类型; C、无形参,也不可重载; D、

11、函数体中必须有delete语句;5、下列静态数据成员的特性中,()是错误的。 A、说明静态数据成员时前边要加修饰符static; B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的; D、引用静态数据成员时,要在其名称前加和作用域运算符;6、友元的作用是()。 A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类;7、关于成员函数特征的下列描述中,()是错误的。 A、成员函数一定是内联函数; B、成员函数可以重载; C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;8、已知:print()函数是一个类的常成员函数,它

12、无返回值,下列表示中,()是正确的; A、void print() const; B、const void print(); C、void const print(); D、void print(const);9、在()情况下适宜采用inline定义内联函数。 A、函数体含有循环语句; B、函数体含有递归语句; C、函数代码小,频繁调用; D、函数代码多,不常调用;10、假定AB为一个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为( )。A、 3 B、 4 C、 6 D、 911、通常拷贝初始化构造函数的参数是( )。 A、某个对象名 B、某个对象

13、的成员名 C、某个对象的引用名 D、某个对象的指针名 12、有关类的说法不正确的是( )。 A、类是一种用户自定义的数据类型 B、只有类中的成员函数才能存取类中的私有数据 C、在类中,如果不作特别说明,所有的数据均为私有类型 D、在类中,如果不作特别说明,所有的成员函数均为公有类型 13、在声明类时,下面说法正确的的是( )。 A、可以在类的声明中给数据成员赋初值 B、数据成员的类型可以是register C、public, private, protected这三种属性的成员可以按任意顺序出现 D、没有用public, private, protected定义的成员是公有成员14、已知:p是

14、一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5, ( )是正确的。 A、A1.p=5 B、A1-p=5 C、A1.*p=5 D、*A1.p=5 15、已知:类A中一个成员函数说明如下: void Set(A&a); 其中,A&a的含义是( )。 A、指向类A的指针为a B、将a的地址值赋给变量Set C、a是类A的对象引用,用来作函数Set()的形参 D、变量A与a按位相与作为函数Set()的参数 16、下列说明中const char *ptr; ptr应该是( )。 A、指向字符型常量的指针 B、指向字符的常量指针 C、指向字符变量的指针 D、指向字符串的常量指针 1

15、7、采用函数重载的目的在于: A、实现共享 B、减少空间 C、提高速度 D、使用方便,提高可读性 18、有关类和对象的说法下列不正确的是( )。 A、对象是类的一个实例 B、任何一个对象只能属于一个具体的类 C、一个类只能有一个对象 D、类与对象的关系和数据类型和变量的关系相似 19、有以下类的说明,请指出错误的地方()。 Class CSample int a=2.5; A CSample(); B public: CSample(int val); C CSample(); D;20、在类的定义形式中,数据成员、成员函数和( )组成了类定义体。 A、成员的访问控制信息 B、公有消息 C、私

16、有消息 D、保护消息二、填空题1 通常的拷贝初始化构造函数的参数是_ 2 在C+中函数参数的传递方式有三种,分别是:_、_和_。3 任何类中允许有三种访问权限的数据,这三种访问权限分别是_、_和_。 4 类中数据成员和成员函数的默认类型为_ 5 在类内部定义的_和_数据不能被不属于该类的成员函数来存取,定义为_的数据,可以在类外部进行存取。 6 _是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。 7 一个类中有_个析构函数。 8 _成员函数中不能直接引用类中说明的非静态成员。 9 已知类Sample 中的一个成员函数说明如下:void

17、Set(Sample &a);其中,Sample &a的含意是_10静态数据成员属于类,可以使用_的方式访问静态的数据成员。 11编译程序将this指针指向_。 12以下程序的执行结果是_。#include using namespace std;class Sample public: Sample () cout “constructore” endl; ;void fn (int i) static Sample c; cout “i=” i endl;int main () fn (10) ; fn (20) ; return 0;13. 以下程序的执行结果是_。#include us

18、ing namespace std;class sample private: int n; static int k;public: sample(int i) n=i; k+; ; void disp();void sample: disp () coutn= n , k= k endl; int sample: k=0;int main () sample a(10), b(20), c(30) ;a.disp() ;b.disp();c.disp();return 0; 14 以下程序的执行结果是_#include using namespace std;class sample in

19、t x;public: void setx( int i ) x=i; int putx( ) return x; ;int main ( ) sample *p;sample A 3;A0.setx(5);A1.setx(6);A2.setx(7);for (int j=0 ; j3; j+ ) p= &A j ; coutputx( ) ;coutendl;return 0;15以下程序的执行结果是_#include using namespace std;class A public: A( ) coutConstructing A n;A( ) coutDestructing A n;

20、 ;class B public: B( ) coutConstructing B n; B( )coutDestructing B n; ;int main( )A a;B b;return 0;三、编程题 1. 定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。2. 设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeA

21、ddress)。成员函数包括人员信息的录入和显示。还包括构造函数与拷贝构造函数。设计一个合适的初始值。 第四章 派生类与继承一、选择1、 从一个基类派生出的各个类的对象之间 (1) 。 A、共享所有数据成员,每个对象还包含基类的所有属性 B、共享部分数据成员,每个对象还包含基类的所有属性 C、不共享任何数据成员,但每个对象还包含基类的所有属性 D、共享部分数据成员和成员函数2、 C+的继承性允许派生类继承基类的 (2) 。 A、部分特性,并允许增加新的特性或重定义基类的特性 B、部分特性,但不允许增加新的特性或重定义基类的特性 C、所有特性,并允许增加新的特性或重定义基类的特性 D、所有特性,

22、但不允许增加新的特性或重定义基类的特性3、 对于公有继承,基类的公有和保护成员在派生类中将 (3) 成员。 A、全部变成公有 B、全部变成保护 C、全部变成私有 D、仍然相应保持为公有和保护4、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为 (4) 的构造函数。 A、自己所属类、对象成员所属类、基类 B、对象成员所属类、基类、自己所属类 C、基类、对象成员所属类、自己所属类 D、基类、自己所属类、对象成员所属类5、派生类的对象对其基类中 (5) 可直接访问。 A、公有继承的公有成员 B、公有继承的私有成员 C、公有继承的保护成员 D、私有继承的以有成员6、设类B是基类A的

23、派生类,并有语句:A aa, * pa=&aa; B bb, * pb=&bb; 则正确的语句是_(6)_ 。A、pb=pa; B、bb=aa; C、aa=bb; D、*pb=*pa;7、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 _ (7)_. A、派生类的对象可以赋给基类的对象 B、派生类的对象可以初始化基类的引用 C、派生类的对象可以直接访问基类中的成员 D、派生类的对象的地址可以赋给指向基类的指针8、若类X和类Y的定义如下:class X int a,b; public: void fx ( );;class Y: public X int c; public:

24、void fy ( );void Y:fy ( ) c=a*b; 则上述代码中, (8) 是非法的语句。 A、void fx();B、k=a*b;C、void fy();D、int c;9、如果一个派生类的基类不止一个,则这种继承称为_(9)_。A、单继承B、虚继承C、多态继承D、多重继承10假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: (10)。A、AB operator+(AB & a , AB & b) B、 AB operator+(AB & a)C、operator+(AB a) D、 AB & operator+(

25、)11、下面叙述不正确的是 (11)。A、派生类可以使用private派生B、基类的public成员在派生类中仍然是publicC、对基类成员的访问必须是无二义性的D、赋值兼容原则也适合多重继承的组合12、下面叙述不正确的是 (12)。A、基类的protected成员在派生类中仍然是protectedB、基类的protected成员在public派生类中仍然是protectedC、基类的protected成员在private派生类中仍然是privateD、对基类成员的访问必须是无二义性的13、下面叙述不正确的是 (13)。A、成员的访问能力在private派生类中和public派生类中仍是不同

26、的B、基类的private成员在public派生类中不可访问C、赋值兼容规则不适合于多重继承的组合D、public基类成员在protected派生中是protected14、下面叙述正确的是 (14)。A、基类的对象可以赋给派生类B、只要是基类的对象,都可以赋给由它派生的任一个派生类对象C、只有该基类直接派生出来的类的对象才可以赋给该基类的对象D、公有派生类的对象可以赋给基类的对象15以下程序的输出结果为是 (15) 。#include using namespace std;class A public: int n; ; class B:virtual public A; class C:

27、virtual public A; class D:public B,public C int getn()return B:n; ; int main() D d; d.B:n=10; d.C:n=20; coutd.B:n,d.C:nendl; return 0; A、10,20 B、20,20 C、10,10 D、输出有二义性,不确定二、填空题1、在C+中派生类时,可以有 (1) 、 (2) 和 (3) 三种不同的方式。2、公有派生类不能访问基类的 (4) 成员,但是派生类可以访问基类的 (5) 成员和 (6) 成员。3、构造函数不能被继承,因此,派生类的构造函数必须通过调用 (7)构造

28、函数进行初始化基类的对象。4、保护派生具有双重作用:对 (8) ,具有公有性,对其他外部,具有(9) 。 5、在多重派生中,要使公共基类在派生类中只有一个拷贝,必须将该基类说明为 (10) 。 6、程序#include using namespace std;class Aprivate: int x;public: A(int x1) x=x1;void print()coutx=x;class B: private Aprivate: int y;public:B(int x1,int y1):A(x1) y=y1;A:print;int main() B b(20,10); b.prin

29、t(); return 0;程序输出的结果为 (11) 。 7、程序#include using namespace std;class A public: A(int i,int j)a=i;b=j; void move (int x,int y) a+=x;b+=y; void show() cout (a,b)endl; private: int a,b;class B:private A public: B(int i,int j,int k,int l):A(i,j) x=k;y=l; void show() coutx,yendl; void fun()move(3,5); voi

30、d f1()A:show(); private: int x,y;int main() A e(1,2); e.show(); B d(3,4,5,6); d.show(); d.fun(); d.f1(); return 0;程序输出的结果为 (12) , (13) , (14) 。 8、程序#include using namespace std;class L protected:int x; public:L(int a)x=a;class X:public L public:X(int a):L(a); int GetX()return x;class Y:public L publ

31、ic:Y(int a):L(a); int GetX()return x;class Z:public X,public Y public:Z(int a):X(a+10),Y(a+20) ;int main() Z z(20); coutz.X:GetX()endl; coutz.Y:GetX()endl; return 0;L类成员int x ,Y类成员int GetX()return x;在Z类中,分别具有什么属性 (15) 和 (16) ;程序输出结果的第一行是 (17) 。9、以下程序输出第一行 (18) , 第二行 (19) 。 #include using namespace s

32、td;class A public:virtual void print()coutmnn;class B:public A public:void print()coutopn; ;class C:public A public:void print(int S=0)coutsqprint(); *ap=&c; ap-print(); return 0; 10、指出下面程序段的错误行,并说明原因 (20) 。 1 class base 2 public: void pbase()coutbaseendl; 3 ;4 class derive :private base5 public:voi

33、d pderive()coutdervieendl;6 ;7 int main()8 base op1,*ptr;9 deiver op2;10 ptr=&op1;11 ptr=&op2;12 return 0;13 11、指出下面程序段的错误行,并说明原因 (21) 。 #include using namespace std;1 class C 2 public: void pbase()coutbaseendl; 3 ;4 class D:public base5 public:void pderive()coutdervieendl;6 ;7 int main()8 C obj1;9

34、D obj2, *ptr;10 ptr=&obj1;11 ptr=&obj2;12 return 0;13 12、指出下面程序段的错误行,并说明原因 (22) 。 #include using namespace std;1 class A 2 public: void print1()coutAendl; 3 ;4 class B:public A5 public:void print2()coutBprint1();12 ptr=&oo2;13 ptr-print1();14 ptr-print2();15 return 0;16 三、编程题1、在下面基类Areaclass的基础上建立两个

35、派生类Box (方形类)与Isosceles(等腰三角形类),每个派生类包含一个函数Area(),分别用于返回方形和等腰三角形的面积,并声明对象,进行检验。class Areaclass public:Areaclass (double x=0, double y=0):height(x), width(y) protected: double height, width;2、定义一个类:圆,包含圆的半径;定义构造函数;计算圆的面积。 利用圆基类派生类:圆柱;定义构造函数;计算圆柱的体积。声明对象,并且检验计算功能。 第五章 多态性一、单选题1、 下列运算符中,_运算符在C+中不能重载。A、

36、? : B、+ C、 D、 B、 C、 : D、3、 在C+中,通常重载运算符的成员函数称为_。A、运算符函数 B、重载函数C、函数重载运算符 D、以上都不对4、 下列函数中,_不能重载。A、成员函数 B、非成员函数 C、析构函数 D、构造函数5、 系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是_。A、参数的个数 B、参数的类型C、参数的顺序 D、函数的类型6、 下列对重载函数的描述中,_是错误的。A、重载函数中不允许使用默认参数B、重载函数中编译是根据参数表进行选择的C、一般情况下,不要使用重载函数来描述毫无相干的函数D、构造函数重载将会给初始化

37、带来多种方式7、 下列关于运算符重载的描述中,_是正确的。A、运算符重载可以改变运算符的个数B、运算符重载可以改变优先级C、运算符重载可以改变结合性D、运算符重载不可以改变语法结构8、要实现动态联编,派生类中的虚函数_。A、参数个数必须与函数的原型相同,参数类型可以与函数的原型不同B、参数类型必须与函数的原型相同,返回类型可以与函数的原型不同C、参数个数、类型和顺序必须与函数的原型相同,返回类型必须与函数的原型相同、以上都对9、关于虚函数的描述中,_是正确的。A、虚函数是一个static类型的成员函数B、虚函数是一个非成员函数C、基类中说明了虚函数后,派生类中对其对应的函数可不必说明为虚函数D

38、、派生类的虚函数与基类的虚函数具有不同的参数个数和类型10、_是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。A、虚析构函数 B、虚构造函数C、纯虚函数 D、静态成员函数 11、对于以下类定义,下面正确的叙述是 ( ) class A public: virtual void func1( ) void func2( ) ; class B:public A public: void func1( )cout class B func 1 end1; virtual void func2( )cout class B func 2 end1; ; A、

39、A:func2( ) 和 B:func1( ) 都是虚函数 B、A:func2( ) 和 B:func1( ) 都不是虚函数 C、B:func1( ) 是虚函数,而 A:func2( ) 不是虚函数 D、B:func1( ) 不是虚函数,而 A:func2( ) 是虚函数12、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: 。A、AB operator+(AB & a , AB & b) B、AB operator+(AB & a)C、operator+(AB a) D、AB & operator+( )13、下面是对虚函数的的正

40、确描述 。A、虚函数不能是友元函数 B、构造函数可以是虚函数C、析构函数不可以是虚函数 D、虚函数可以静态成员函数 二、填空题1、 C+ 支持的两种多态性分别是_多态性和_ 多态性。2、 静态编联通过 和 实现,动态编联通过 和 实现。3、 函数重载时,须符合 相同和 、 、 之一至少不同四个条件4、运算符重载的两种方法: 和 。5、以下程序的执行结果是_。#include using namespace std;static int dys=31,28,31,30,31,30,31,31,30,31,30,31;class date int mo,da,yr; public:date(int

41、 m,int d,int y) mo=m; da=d; yr=y; date() void disp() coutmo”/”da”/”yrdysdt.mo-1) day-=dysdt.mo-1; if(+dt.mo=13) dt.mo=1; dt.yr+; dt.da=day; return dt;int main() date d1(2,10,2001),d2; d2=d1+20; d2.disp(); return 0;6、以下程序的执行结果是_。#include using namespace std;class base public:virtual void f1() cout”f1

42、 function of base”endl; virtual void f2() cout”f2 function of base”endl; virtual void f3() cout”f3 function of base”endl; void f4() cout”f4 function of base”endl; ;class derive: public base void f1() cout”f1 function of derive”endl; void f2(int x) cout”f2 function of derive”endl; void f4() cout”f4 f

43、unction of derive”f1(); p-f2(); p-f3(); p=&obj2; p-f1(); p-f2(); p-f4(); return 0;7、以下程序的执行结果是_。#include using namespace std;class Sample private:int x; public:Sample() x=0; void disp() cout”x=”xendl; void operator+() x+=10; ;int main() Sample obj; obj.disp(); obj+; cout”执行obj+之后”endl; obj.disp(); return 0;8、以下程序的执行结果是_。#include using namespace std;class Point public:Point() x=0; y=0; Point(unsigned x, unsigned y) Point:x=x; Point:y=y;unsigned getx() return x; unsigned gety() return y; void print() cout”Point(“x”,”y”)”endl;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论