东北农业大学22春《面向对象程序设计》在线作业三及答案参考70

( 13 )下列关于派生类构造函数和析构函数的说法中,错误的是

A )派生类的构造函数会隐含调用基类的构造函数

B )如果基类中没有缺省构造函数,那么派生类必须定义构造函数

C )在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D )在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数


正确答案:D


( 22 )建立一个类对象时,系统自动调用

A )析构函数

B )构造函数

C )静态函数

D )友元函数


正确答案:B


下列关于派生类构造函数和析构函数的说法中,错误的是

A.派生类的构造函数会隐含调用基类的构造函数

B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数

C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数


正确答案:D
解析:本题考查的知识点是;派生类的构造函数和析构函数。在销毁派生类对象时,析构函数的执行;过程与构造函数严格相反,即;(1)对派生类新增普通成员进行清理; (2)调用成员对象析构函数,对派生类新增的成员对象进行清理;(3)调用基类析构函数,对基类进行清理。故本题应该选择D。


对于派生类的构造函数,在定义对象时构造函数的执行顺序:先执行调用______的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。


正确答案:基类
基类 解析: 对于派生类的构造函数,在定义对象时构造函数的执行顺序:先执行调用基类的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。所以本题填:基类。


在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。()


参考答案:正确


东北农业大学22春面向对象程序设计在线作业三及答案参考1. 运算符delete删除一个动态对象时( )。A.首先为该动态对象调用构造函数,再释放其占用的内存B.首先释放该动态对象占用的内存,再为其调用构造函数C.首先为该动态对象调用析构函数,再释放其占用的内存D.首先释放动态对象占用的内存,再为其调用析构函数参考答案:C2. 下列语句序列执行后,ch1的值是( )。 char ch1=&39;A&39;,ch2=&39;W&39; if(ch1 + 2 ch2 ) +ch1;A.AB.BC.CD.B参考答案:B3. 结构化程序设计方法以( )为中心进行分析和设计。A.结构B.模块C.对象D.类参考答案:B4. 关键字super的作用是( )。A.用来调用父类的构造方法B.用来调用父类中被重载的方法C.用来访问父类被隐藏的成员变量D.以上都是参考答案:D5. C语言编写的源程序其文件扩展名是( )。A.cB.objC.exeD.bat参考答案:A6. 要使语句“p=new int1020;”能够正常执行,p应被事先定义为( )。A.int*p20B.int*pC.int*pD.int(*p)20参考答案:D7. 在类体外定义成员函数时需要通过域运算符指定该成员函数所属的类。( )在类体外定义成员函数时需要通过域运算符指定该成员函数所属的类。( )A.正确B.错误参考答案:A8. 在以下说明中,标识符ptr( )。Int(*ptr)3A.说明不合法B.是一个指针数组名,每个元素是一个指向整数变量的指针C.是一个指针数组名,每个元素是一个指向整数变量的指针D.是一个指向整型变量的指针参考答案:C9. 成员函数一定是内联函数。( )A.对B.错参考答案:B10. 运算符只能用成员运算符来重载,不能用友元运算符来重载。( )运算符只能用成员运算符来重载,不能用友元运算符来重载。( )A.正确B.错误参考答案:A11. 派生类的对象对它的基类成员中( )是可以访问的。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员参考答案:A12. 类的常量成员函数中只能使用常量数据成员。( )A.正确B.错误参考答案:B13. 程序控制语句主要包括选择、循环和( )。A.跳转B.注释C.条件编译D.宏定义参考答案:A14. 在C+程序中,有且仅能有一个主函数,且其函数名必须是main。( )在C+程序中,有且仅能有一个主函数,且其函数名必须是main。( )A.正确B.错误参考答案:A15. 一个类的构造函数中可以不包含对其子对象的初始化。( )A.正确B.错误参考答案:B16. 类外可以直接引用类的所有静态数据成员和静态成员函数。( )A.对B.错参考答案:B17. 重载的运算符保持原来的优先级和结合性以及操作数的个数。( )A.正确B.错误参考答案:A18. C+语言的跳转语句中,对于break和continue说法正确的是( )。A.break语句只应用于循环体中B.continue语句只应用于循环体中C.break是无条件跳转语句,continue不是D.break和continue的跳转范围不够明确,容易产生问题参考答案:B19. 在下面循环语句中循环体执行的次数为( )。int i=0,s=0;while(sA.4B.5C.6D.7参考答案:C20. 通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。( )通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。( )A.正确B.错误参考答案:B21. 创建字符串s:String s=new String(abcd); 以下( )将改变s。A.以上语句都不会B.s.substring(3);C.s.concat(y);D.s.append(x);参考答案:A22. 一般对象和指向对象指针的成员函数表示分别是运算符.和-。( )A.错误B.正确参考答案:B23. Java中main( )函数的值是( )。A.voidB.intC.charD.String参考答案:A24. 下列表示引用的方法中,( )是正确的。已知:int k=1000A.int &x=kB.char &yC.int &z=1000D.float &t=&k参考答案:A25. 类Teacher和Student是类Person的子类; Person p; Teacher t; Student s; /p, t and s are all non-null. if(t instanceof Person) s = (Student)t; 最后一句语句的结果是( )。A.将构造一个Student对象B.表达式是合法的C.表达式是错误的D.编译时正确,但运行时错误参考答案:C26. 下面程序段中是内联函数的是( )。class locationprivate:int x ,y;public:void init(int initx,int inity) x=initx; y=inity; int getx( )return x;int gety( );inline int location:gety( ) return y;下面程序段中是内联函数的是( )。class locationprivate:int x ,y;public:void init(int initx,int inity) x=initx; y=inity; int getx( )return x;int gety( );inline int location:gety( ) return y;A.init (int initx,int inity)B.getx( ),gety( )C.A和B都是D.A和getx( )参考答案:C27. C语言中,下列( )是正确的标识符。A.1aB.cC.-cD.a1参考答案:D28. 成员函数的参数可以设置默认值。( )A.对B.错参考答案:A29. 通过指针或引用可以调用不同对象相同名称的函数,但可导致完全不同的行为的现象称为二义性。( )A.正确B.错误参考答案:B30. C+语言类定义中默认的访问权限是public。( )C+语言类定义中默认的访问权限是public。( )A.正确B.错误参考答案:B31. 设i、j、k为类x中定义的int型变量名,下列类x的构造函数中不正确的是( )A.x( int m) . B.void x( int m) . C.x( int m, int n) . D.x( int h,int m,int n) . 参考答案:B32. 用new动态申请的内存是在堆中分配的,而不是在栈中分配的。( )A.错误B.正确参考答案:B33. 关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )。A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类B.可以被两种类访问和引用:该类本身、该类的所有子类C.只能被该类自身所访问和修改D.只能被同一个包中的类访问参考答案:C34. 下列构造方法的调用方式中,正确的是( )。A.按照一般方法调用B.由用户直接调用C.只能通过 new 自动调用D.被系统调用参考答案:C35. 下列哪些语句是正确的( )。A.int a=new int3;B.int a=1,3,2,3,4,1,2;C.String s=new String2;D.String s=can,I,help,you参考答案:BCD36. 有类定义:abstract class Apublic abstract void f( ); 下面关于该类的描述中正确的是( )。A.该类的方法不能被重载B.该类可以用new A( ); 实例化一个对象C.该类不能被继承D.以上说法都不对参考答案:D37. 不允许作为类及类成员的访问控制符的是( )。A.publicB.privateC.staticD.protected参考答案:C38. 下列语句输出结果为( )。 public class Apublic static void main(Stringargs)byte b=0xa; System.out.println(b); 。A.aB.10C.1D.0xa参考答案:B39. int a1=5,a2=10,a3=20;int c=(a1A.10B.5C.20D.1参考答案:A40. 假定AB为一个类,有类AB的两个对象a1,a2; 则执行语句AB *a10=&a1,&a2;时系统自动调用该类的构造函数的次数为2。( )A.正确B.错误参考答案:B41. 下列程序段执行后的结果是( )。String s=new String(“abcdefg”); for(int i=0;is.length( );i+=2)System.out.print(s.charAt(i);A.acegB.ACEGC.abcdefgD.abcd参考答案:A42. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( )。A.deletepB.deletepC.delete*pD.delete&p参考答案:A43. 类中所提供的成员函数可以直接访问该类的私有成员。( )A.正确B.错误参考答案:A44. 设有说明语句:int x=1, y=3, z=5; 则下面表达式中值为0的是( )。A.(y!=1)&(z!=0)B.x&zC.(xy)&xzD.x|y3&z5参考答案:A45. 数组的大小在创建以后( )。A.


关于new运算符的错误的描述是( )。

A.使用运算符new创建对象数组时必须定义初始值

B.使用运算符new创建对象时,会调用类的构造函数

C.运算符new可以用来动态创建对象和对象数组

D.使用new运算符创建的对象可以使用运算符delete删除


正确答案:A


下列关于delete运算符的叙述中,错误的是( )

A使用delete运算符释放类对象时要调用该类的析构函数

Bdelete运算符可以作用于空指针

C由new运算符分配的动态内存空间必须通过delete运算符释放

D使用delete运算符释放动态分配的单个对象和对象数组的语法格式相同


答案:C


下列关于派生类构造函数和析构函数的叙述中,错误的是

A.派生类的构造函数会隐含调用基类的构造函数

B.如果基类中没有默认构造函数,那么派生类必须定义构造函数

C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数


正确答案:D
解析:在通常情况下,派生类和基类的构造函数的执行顺序为:先执行基类的构造函数,然后执行派生类的构造函数;当撤销派生类对象时,先执行派生类的析构函数,随后再执行基类的析构函数。


下列关于派生类构造函数和析构函数的说法中,错误的是( )。

A.派生类的构造函数会隐含调用基类的构造函数

B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数

C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

D.在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数


正确答案:D
解析:此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。


建立一个类对象时,系统自动调用

A.析构函数

B.构造函数

C.静态函数

D.友元函数


正确答案:B
解析:构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始化为一种特定的状态,使该对象具有区别于其他对象的特征。构造函数在对象被创建的时候由系统自动调用。故答案选B)。


相关考题:

考题 下列关于运算符delete的描述中,错误的是()。A、使用该运算符可以释放用new运算符创建的对象或对象数组B、使用该运算符可以释放所有对象C、使用delete运算符时会自动调用析构函数D、用它释放对象数组时,它作用的指针名前要加下标运算符[]正确答案:B

考题 多选题关于类的构造函数,以下描述中正确的是()A当创建一个对象时,该对象的构造函数会被自动调用;B当创建一个对象时,需要指明是否调用该对象的构造函数;C同一个类可以有几个构造函数,各构造函数的参数必须不同;D同一个类可以有几个构造函数,各构造函数的参数必须相同;E构造函数的名称与类的名称相同;正确答案: B,C解析: 暂无解析

考题 虚析构函数的作用是()A、虚基类必须定义虚析构函数B、类对象作用域结束时释放资源C、delete动态对象时释放资源D、无意义正确答案:C

考题 下列关于派生类构造函数和析构函数的说法中,错误的是( )。A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 正确答案:D在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。

考题 关于new运算符的下列描述中,()是错误的。A、它可以用来动态创建对象和对象数组B、使用它创建的对象和对象数组可以使用运算符delete删除C、使用它创建对象时要调用构造函数D、使用它创建对象数组时必须指定初始值正确答案:D

考题 单选题下列关于运算符delete的描述中,错误的是()。A使用该运算符可以释放用new运算符创建的对象或对象数组B使用该运算符可以释放所有对象C使用delete运算符时会自动调用析构函数D用它释放对象数组时,它作用的指针名前要加下标运算符[]正确答案: A解析: 暂无解析

考题 多选题关于类的构造函数,以下描述中正确的是()A当创建一个对象时,该对象的构造函数会被自动调用;B当创建一个对象时,需要指明是否调用该对象的构造函数;C同一个类可以有几个构造函数,各构造函数的参数必须不同;D同一个类可以有几个构造函数,各构造函数的参数必须相同;E构造函数的名称与类的名称相同;正确答案: B,E解析: 暂无解析

考题 下列关于派生类构造函数和析构函数的说法中,错误的是( )。A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 正确答案:D

考题 单选题下列关于派生类构造函数和析构函数的说法中,错误的是(  )。A派生类的构造函数会隐含调用基类的构造函数B如果基类中没有缺省构造函数,那么派生类必须定义构造函数C在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数正确答案: C解析: 在释放派生类对象时,析构函数函数的执行顺序是:先执行派生类的析构函数,然后执行成员对象的析构函数,最后执行基类的析构函数。

考题 关于类的构造函数,以下描述中正确的是() A、当创建一个对象时,该对象的构造函数会被自动调用;B、当创建一个对象时,需要指明是否调用该对象的构造函数;C、同一个类可以有几个构造函数,各构造函数的参数必须不同;D、同一个类可以有几个构造函数,各构造函数的参数必须相同;E、构造函数的名称与类的名称相同;正确答案:A,C,E
最新考题