( 13 )下列关于派生类构造函数和析构函数的说法中,错误的是
A )派生类的构造函数会隐含调用基类的构造函数
B )如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C )在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D )在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
( 22 )建立一个类对象时,系统自动调用
A )析构函数
B )构造函数
C )静态函数
D )友元函数
下列关于派生类构造函数和析构函数的说法中,错误的是
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
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运算符释放类对象时要调用该类的析构函数
Bdelete运算符可以作用于空指针
C由new运算符分配的动态内存空间必须通过delete运算符释放
D使用delete运算符释放动态分配的单个对象和对象数组的语法格式相同
答案:C
下列关于派生类构造函数和析构函数的叙述中,错误的是
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类中没有默认构造函数,那么派生类必须定义构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
下列关于派生类构造函数和析构函数的说法中,错误的是( )。
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
建立一个类对象时,系统自动调用
A.析构函数
B.构造函数
C.静态函数
D.友元函数