欢迎光临散文网 会员登陆 & 注册

哈哈哈

2023-06-25 19:54 作者:Riko_Ishiguro  | 我要投稿

1.(多选题,3.3分)使用面向对象思维解决一个问题的时候,我们需要思考哪些事情()A.解决该问题需要什么样的对象?B.这些对象具有什么样的属性特征和行为特征?C.怎么跟这些对象沟通协作实现问题求解?D.这些对象是善良的,还是邪恶的?我的答案: ABC正确答案: ABC2.(多选题,3.3分)C++语言通过class语法设施来描述对象的哪些东西?A. 本质的属性特征B. 本质的行为特征C.对象之间的关系D. 对象如何发送消息我的答案:AB正确答案: AB2.(多选题,3.3分)class和struct在语法上的区别是(A. class的默认访问限定是publicB. class的默认访问限定是privateC. struct的默认访问限定是privateD. struct的默认访问限定是public我的答案: BD正确答案: BD5.(多选题,3.3分)在类成员中描述对象属性的是(),描述对象行为能力的是( )。A.数据成员B.成员函数C.公有成员D.私有成员我的答案: AB正确答案: AB6.(多选题,3.3分)关于类体内和类体外提供定义的成员函数如下陈述正确的是()A.类体内提供定义的成员函数,默认内联。B.类体内提供定义的成员函数,默认非内联。C.类体外提供定义的成员函数,默认内联D.类体外提供定义的成员函数,默认非内联我的答案: AD正确答案:AD7.(多选题,3.3分)类=属性特征+行为特征=数据成员+成员函数=公有成员+私有成员类,是自定义的数据类,它建立了哪些约定。A.约定了类对象的存储空间大小。B.通过数据成员约定了对象的编码和解码方式。C.通过成员函数约定了对象可以做的运算和处理。D.通过访问限定约定了对象的访问方式。我的答案: ABC正确答案:ABC8. (多选题, 3.3分)如下定义的类CDate,就定义了一个数据类型,约定了CDate对象的存储空间大小。问:一个Date对象的C存储空间大小是( )个字节,假设int是4个字节class CDateint year, month, day, hour, minute, second;A. 12B.18C. 24D. 30我的答案:C正确答案:9.(多选题,3.3分)访问对象的成员有哪些方式。A.对象名.数据成员名B.对象名.成员函数名(实参列表)C.指针->数据成员名D.指针->成员函数名(实参列表)我的答案: ABCD正确答案: ABCD10.(多选题,3.3分)关访问对象的成员,正确的陈述是()A.private,只能在类自身的成员函数中访问的成员。B.public,在类自身成员函数和外部函数中都可以访问。C.protected,在类及其派生类自身的成员函数中可以访问。D.private,在派生类自身的成员函数中可以访问。我的答案: ABC正确答案: ABC12.(多选题,3.3分)类的数据成员并不等同于变量,他们的区别在于()。A.类的数据成员,只是关于对象属性数据的约定,说明类的数据成员其实是一种声明,并不会产生与之对应的实际的存储空间。B.变量,是根据数据类型产生的存储空间,变量可以直接初始化设定其初值。C.类的数据成员,约定对象具有这种属性,是一种声明,描述对象中数据成员的存储空间大小、编码和解码方式、可接受的运算。D.类的数据成员,伴随着对象的产生而产生(静态数据成员除外) 。我的答案: ABCD正确答案:ABCD3.313.(多选题,3.3分)成员函数,用于约定对象的行为能力,以下陈述正确的是(1A.约定对象的普通行为:普通成员函数。B.约定对象产生时刻的行为:构造函数。"C.约定对象死亡时刻的行为:析构函数。D.约定对象运算的行为:运算符重载函数。我的答案: ABCD正确答案:ABCD14.(多选题,3.3分)如下关于对象产生,正确的陈述是()。A.在对象产生时,必然会调用构造函数。B.在对象从产生到消亡的一生中只会调用1次构造函数。C.在对象从产生到消亡的一生中只会调用这2次构造函数。D.在对象从产生到消亡的一生中只会调用这3次构造函数。我的答案: AB正确答案: AB15. (多选题,3.3分)如下对象date1的产生会调用哪个构造函数。CDate date1;A.CDate):year(1970),month(1),day(1) {}B.CDate(int y, int m, int d) : year(y), month(m), day(d) {}C.CDate(int y) : year(y), month(1), day(1) { }D.CDate(const CDate& dt) f我的答案: A正确答案:A   16. (多选题,3.3分)如下对象date1的产生会调用哪个构造函数。CDate date1(2015,5,8);A.CDate():year(1970),month(1),day(1) {}B.CDate(int y, int m, int d) : year(y), month(m), day(d) {}C.CDate(int y) : year(y), month(1), day(1) {}D.CDate(string dt) {..我的答案:B正确答案:B19.(多选题,3.3分)如下对象date2的产生会调用哪个构造函数。CDate date2 = date1;CDate date1(2015,5,8);A.CDate():year(1970),month(1),day(1) {}B.CDate(int y, int m, int d) : year(y), month(m), day(d) {}C.CDate(string dt) {…}D.CDate(const CDate& dt) {..我的答案: D正确答案:20. (多选题,3.3分)关于构造函数,如下陈述正确的是()A.参数个数为0:默认构造函数。က参数个数=1,如果非同类对象:转换构造函数。参数个数=1,如果是同类对象:拷贝构造函数。参数个数> 1:普通构造函数我的答案: ABCD正确答案: ABCD21.(多选题,3.3分)如下代码定义的类,具有几个构造函数( )。class CA一CA(int a)0CA(float a)~CAO 0A. 1B.2C.3D. 4我的答案:C正确答案:22. (多选题, 3.3分)对于如下的CDate类而言,编译器合成的默认拷贝构造函数,是否满足我们的要求。classCDateint y, m, d, h, m, s;A.满足B. 不满足C.有可能不满足D.不确定我的答案: A正确答案: A23.(多选题,3.3分)假设一个类的名字是TTT,请问如下给出的该类的拷贝构造函数声明哪些是正确的 ?A. TTT(const TTT&);B. TTT(const TTT);•C. TTT(TTT&);D. TTT(TTT);;我的答案:AC正确答案: AC24.(多选题,3.3分)以下哪些情况会调用拷贝构造函数A.在任何需要通过同类对象克隆产生新对象的时候,都会调用拷贝构造函数。B. 函数按值返回一个对象。C.函数调用时,克隆生成形参对象。D.函数调用时,别名生成形参对象。我的答案: ABC正确答案: ABC25.(多选题,3.3分)如果需要禁用编译器的隐式类型转换,则需要给转换构造函数加上()A. static_castB. implicitC. explicitD. expectit我的答案:C正确答案:26. (多选题,3.3分)假设一个类AAA,需要将其转换成int,则约定该行为的转换成员函数的形式是( )。A. AAA::int{ ... }B. AAA::operator int(){..}C. AAA::operator int(const AAA& a){... }D. AAA::operator int(AAA& a){..}我的答案: B正确答案: B27.(多选题,3.3分)关于析构函数,正确的陈述有()A.析构函数,是一种成员函数,专门用于约定对象死亡时刻的善后清理行为.B.系构函数的名字是: ~类名C.析构函数,在对象生命期结束时自动调用。D.析构函数,在对象生命期内会被调用2次。我的答案: ABC正确答案: ABC28.(多选题,3.3分)析构函数一般情况下不需要编写,何时需要编写自己的析构函数呢?A.默认析构函数的行为,不满足要求的时候.B.在对象死亡时需要释放堆内存时,C.在对象死亡时需要给出提示时.D.在对象死亡时需要关闭文件时.我的答案: ABCD正确答案:ABCD29.(多选题,3.3分)如果一个类需要我们编写自己的析构函数,则极大可能我们还必须编写自己的( ).A. 默认构造函数B.拷贝构造函数C.转换构造函数D.赋值运算符我的答案: BD正确答案: BD30. (多选题, 3.3分)如下的main函数在执行过程中调用了几次CDate的构造函数?void call(CDate d1, CDate d2) {cout<<"调用call函数:"<<endl;}int main(){CDate local1 = CDate(1949, 10, 1);CDate local2 = CDate(1949, 10, 2);call(local1, local2);return 0;A.1B.2C.3D. 4我的答案:D正确答案: D31. (多选题,4分)想让如下代码在语法成立,需要在CA类中添加如下那种代码。class CA{private:const int a;public:void test() {...)};مint mainCA obj;return 0;A. CA(CA&):a(0)0B. CA(int t):a(t)0C. CA):a(1)0D.CA00我的答案:C正确答案: C42.(多选题,10分)对于CDate类而言,如下两个日期做减法运算对应的函数调用可能是()。int span = date1 - date2;CDate date1(2005), date2(2008);A. date1.operator-(date2)B. date1.diff(date2)C. operator-(date1, date2)D. date1.operator-(date1, date2)我的答案: AC正确答案:AC43.(多选题,10分)如下对于CDate类而言,减法运算符通过哪种方式进行了重载。public:int diff(CDate); int operator- (CDate);};int CDate::operator-(CDate date) { return diff(date);A.重载为成员函数B.重载为非成员函数C.重载为友元函数D.重载为内联函数我的答案: A正确答案: A44, (多选题, 10分)如下代码中, CDate类的减法运算符被重载为哪种形式( )。classCDatepublic:int diff(CDate);};int operator-(CDate d1, CDate d2) return d1.diff(d2);A.成员函数B.非成员函数C.友元函数D.内联函数我的答案: B正确答案: B45.(多选题,10分)如下CDate类重载了减法运算符,以下陈述正确的有哪些(classCDatefriend int operator-(CDate, CDate);}; int operator-(CDate d1, CDate d2) { int d1 = dt1.getTotalDays0;int d2 = dt2. getTotalDays();return abs(d1-d2);A.减法运算符被重载为非成员函数B.减法运算符重载函数是CDate类的友元函数C.在减法运算符重载函数中,可以访问一个CDate对象的私有成员D.在减法运算符重载函数中,可以访问this所指对象的私有成员我的答案: ABC正确答案: ABC46. (多选题,10分)如果需要为向量类CVector扩展数乘运算符,如下哪些是可以选择使用的( )。A. CVector CVector:operator*(double c) {..B. CVector& CVector::operator*(double c) {...}C. CVector operator*(CVector v, double c) {.}D. CVector operator*(double c, CVector v) {.}我的答案:ACD正确答案:ACD47.(多选题,10分)如果要给CDate扩充前置++运算符,如下哪个是可用的()。A. CDate CDate::operator++(){...B. CDate& CDate::operator++0...)C. CDate& operator++(CDate d) {..)D. CDate& operator++(CDate &d) {..我的答案: BD正确答案: BD48.(多选题,10分)如果要给CDate扩充后置++运算符,如下哪个是可用的()。A. CDate CDate::operator++(int) {...)B. CDate& CDate::operator++(int) {..}C. CDate& operator++(CDate d, int) {...}D. CDate operator++(CDate &d, int) {..}我的答案: AD正确答案: AD49, (多选题, 10分)如果为CVector扩充赋值运算符,则如下哪个是可用的( )。A. CVector& operator=(CVector& v, CVector& v) {....)B. CVector& operator=(CVector& v, const CVector& v) {....}C. CVector& CVector:operator=(CVector& v) {....D. CVector& CVector:operator=(const CVector& v) {...)我的答案:CD正确答案:CD50. (多选题,10分)如果要为CA类扩充析取运算符>>,则如下哪些是合适的( )。A. istream& operator>>(istream& is, CA a) {..}B. istream& operator>>(istream& is, CA &a) {…..}C. istream& operator>>(istream& is, const CA &a) { …}D. istream& CA::operator>>(istream& is, CA &a) { .. }我的答案: B正确答案: B51.(多选题,10分)给一个类扩充赋值运算符的时候,在函数的开始和最后必须完成哪些工作( )。A.避免自我赋值。B. return *this;C.返回自己.D. return this;我的答案: ABC正确答案:ABC52.(多选题,10分)对于如下代码,正确的陈述有( ).class CDate {public:CDate( ) {year=1900;month=1;day=1;};class CBaby {private:string name;const CDate birthday;public:CBaby0 0};intmainCBaby baby[20];return 0;A.在main函数中产生了20个CBaby对象。B.会调用CDate的默认构造函数20次。C.20个CBaby对象共享同一个birthday容器。D.20个CBaby对象,每个都有自己独立的birthday容器。我的答案: ABD正确答案: ABD53.(多选题,10分)对于const数据成员而言,如下陈述正确的是()。A. const数据成员在对象的一生中不可改变。B.const数据成员在对象产生的时候必须初始化。C.const数据成员必须由程序员编写代码调用构造函数进行显式的初始化。D.const数据成员可以由编译器调用构造函数进行隐式的初始化。我的答案:ABD正确答案:ABD54.(多选题,10分)关于引用型数据成员,正确的陈述有( )。A.引用型数据成员,不具有独立容器。B. 引用型数据成员,其实是其他变量的别名。C.引用型数据成员,必须在对象产生的时候进行初始化。D.引用型数据成员的初始化,必须在初始化列表中进行。我的答案: ABCD正确答案:ABCD55.(多选题, 10分)被const修饰的成员函数,其实是提供了某种保证()。A.保证不会修改this所指对象的数据成员。B.保证不会修改所在类的任意对象的数据成员。C.const成员函数不能访问非const数据成员D.const成员函数可以访问非const数据成员,只是不能修改它.我的答案:AD正确答案: AD58.(多选题,10分)关于static数据成员,如下陈述正确的是()。A.一般的数据成员,隶属于对象,在每个对象中都拥有自己的实体,随着对象的生死而生死。B.静态数据成员隶属于整个类,而非隶属于某个特定的对象,在程序执行期间只有唯一的一个实体,可以被该类的所有对象所共享。C.静态数据成员具有静态生存期,其生死与对象无关。在程序开始执行时产生(从静态存储区中获得存储空间) ,在程序执行结束时消亡。D.静态数据成员除了要在类体中声明之外,还必须在类体外定义我的答案: ABCD正确答案: ABCD59. (多选题,10分)对于如下的CPerson类,访问成员的正确表示有哪些( )。private:string name;boolsex;public:static int nCount;static void howmany0 {cout<<nCount<<endl;};int CPerson:nCount = 0;CPerson *p;A. CPerson::howmanyB. CPerson:nCountC.p->CountD. p->howmany()}我的答案: ABCD正确答案:ABCD60.(多选题,10分)以下关于静态成员函数的陈述,正确的是( )A.静态成员函数,是隶属于整个类的,调用的时候只需要限定类域即可,不需要通过具体的对象。当然,通过具体对象,也可以调用到静态成员函数,但不是必须的。B.普通成员函数中隐含的this指针,在静态成员函数中是不存在的,因为静态成员函数不属于对象。C.静态成员函数能够访问非静态的成员函数,或者非静态的数据成员。D.静态成员函数只能访问静态成员。我的答案: ABD正确答案: ABD1061.(多选题,10分)以下关于文件读写的陈述正确的有( )。A.打开的文件必须关闭。B.文件流类似于一个管道,一端连接内存容器,一端连接磁盘文件。一C.文本文件中存放的是二进制序列,不过该二进制序列是与数据对应的ASCII字符编码,打开后直接可读。D.二进制文件中直接存放了数据的原始二进制码值,强行把码值解释为ASC11字符,其结果会乱码。我的答案: ABCD正确答案: ABCD1. (多选题, 2.5分)为了提高代码的可读性,在程序中可以使用哪些方法替代代码中的魔术数字。 宏定义 常变量 符号常 (多选题, 2.5分)对于如下数组s而言,数组的类型是什么,数组元素的类型是什么int s[3][20][50]; B. 数组的类型是int [3][20][50],数组元素的类型是int [20][50]。4.(多选题,2.5分)以下的数组定义,哪些是正确的。A. int iScores1[50+10/2];B. int n = 50, iScores2[n];C. #define NUM 50int iScores3[NUM];D. int iScores4[N];const int N = 50;正确答案: ACD5.(多选题,2.5分)C++语言约定:表达式中数组的名字,求值结果是数组第一个元素的地址。对于如下数组,其第i个数组元素的地址是: ()。int iScores[50];A. iScores + i* sizeof(int),i从0开始B. iScores + i* sizeof(int), i从1开始C. iScores + (i-1)* sizeof(int),i从0开始D. iScores + (i-1)* sizeof(int),i从1开始 :AD正确答案: AD6. (多选题, 2.5分)[ ]变量定义和表达式中分别表示什么含义?A.在变量定义中标志着该名字是一个数组。B.在表达式中表示对该名字的数组进行下标运算。C.在变量定义中标志着[]是下标运算符。D.在表达式中标志着该名字是一个数组。 : AB正确答案:AB8.(多选题,2.5分)对于如下的数组定义,请问在数组中存储的哪些整型变量非零int iAry[2][4] = {1,4};A. iAry[0][0]B. iAry[0][1]C. iAry[1][0]D. iAry[1][1] : AB正确答案: AB10.(多选题,2.5分)指针变量,跟其他类型的变量类似,也是定义了一个容器,只不过该容器里面只能用于保存地址。如下指针变量ptr的类型是什么, ptr所指变量的类型是什么?double *** (* ptr)[3][30];A. ptr的类型是: double *** (*)[3][30]B. ptr的类型是: double *** [3][30]C. ptr所指变量的类型是: double*** [3][30]D. ptr所指变量的类型是: double**** [3][30] :AC正确答案: AC11.(多选题,2.5分)?int iMyAge = 30int *pMyAge = &iMyAge;int*pAnother = pMyAge;cout<<"pMyAge的数据为: "<<pMyAge<<endl;cout<<"pAnother的数据为: "<<pAnother<<endl;A. 相同B.不同C.可能相同D.可能不同正确答案:A&pMyAge选B不同  *pMyAge选A相同)14.(多选题,2.5分)以下有可能实现实参变量交换的函数声明有哪些()A. void exchange(int* pa, int *pa);B. void exchange(int pa, int pa);C. void exchange(int &pa, int &pa);D. void exchange(int &pa, int *pa); :ACD正确答案:ACD15. (多选题, 2.5分)对于如下代码,假设iMyAge的地址为006FFBC0,请给出屏幕输出结果。int iMyAge= 30;int *pMyAge = &iMyAge A.pMyAge = 006FFBCOpMyAge + 1 = 006FFBC4pMyAge-1= 006FFBBCpMyAge +5= 006FFBD4pMyAge-5= 006FFBAC16.(多选题, 2.5分)对于如下的变量a,假设其地址为00F8FE40。则指针ptr+2的求值结果( )int a[3][10]; int (*ptr)[10]=aA. 00F8FE40B.00F8FE44C. 008FFDDOD. 0OF8FE90 : D正确答案:D17.(多选题,2.5分)如下代码的输出结果是()int a[3][10]; int(*ptr1)[10]= a; int(*ptr2)[10] = a+2;cout << ptr2 - ptr1 << endl;A.3B.2C. 30D. 20 : B正确答案:B18. (多选题, 2.5分)指针和数组关系非常紧密,指针一旦指向数组,则指针可以进行下标运算,而数组也可以进行指针运算。假设指针pMyScore指向了数组iScores的首元素,则如下表达式相互等价的有:A. iScores[i]B. *(iScores+i)C.*(pMyScore+i)D. pMyScore[i] : ABCD正确答案:ABCD19. (多选题,2.5分)void类型的指针与非void类型的指针有哪些联系和区别呢?A.void指针和非void指针都可以保存地址。B. void指针可以保存任何类型的变量的地址,非void指针则只能保存特定类型的变量的地址。C.void指针不能直接解引用。D.非void指针能够直接解引用。 : ABCD正确答案:ABCD20.(多选题,2.5分)new和new[]这两个运算符都会引发两个动作A.从堆区申请存储空间B.返回存储空间的地址C.从栈区申请存储空间D.从代码区申请存储空间 : AB正确答案: AB21.(多选题,2.5分)如下一行代码中涉及到几个变量。double* pPrice = new double(1.5);A.涉及到一个变量: pPrice指针B.涉及到两个变量: pPrice指针、new出来的动态变量C. 涉及到三个变量:pPrice指针、new出来的两个动态变量D.涉及到一个变量: new出来的动态变量 : B正确答案:B22.(多选题,2.5分)如下代码中ppMyAge指向了谁int myAge(30);int*pMyAge = new int(30);(*pMyAge)++;int* *ppMyAge = new int*;*ppMyAge = pMyAge;A.指向myAgeB.指向pMyAgeC.指向pMyAge指向的动态变量D.指向一个类型为int*的动态变量 : D正确答案: D23. (多选题, 2.5分)请问如下代码中, delete运算符释放的是谁?int* pMyAge= new int(30);delete pMyAge;A.指针变量pMyAgeB.指针变量pMyAge的存储空间C.指针所指的动态变量D.指针所指的动态变量的存储空间 :CD正确答案:CD24.(多选题,2.5分)希望定义一个指针,指向如下动态数组的首元素,则类型说明正确的是()。new int [3] [50];A. int (*p2d)[50];B. int *p2d[50];C. int **p2d[50];D. int *(*p2d)[50]; :A正确答案:A25.(多选题,2.5分)对于如下的数组及其指针想要访问第i行第j列的整型变量,正确的写法是()。int M = 3;int (*p2d)[50] = new int[M][50];A. *(*(p2d+i)+j)B. p2d[i][j]C. (*(p2d+i))[j]D. *(p2d[i]+j) :ABCD正确答案:ABCD26, (多选题, 2.5分)我们在编写程序时,在不同的编程阶段会使用到三种字符集,包括( )。A.源代码字符集B.执行字符集C. GB2312字符集D.运行环境字符集 :ABD正确答案: ABD27.(多选题,2.5分)字符串"ABC测试ABC"和字符串 L"ABC测试ABC"占据的存储空间相差几个字节。A.5B.6C.7D.8 :C正确答案:C28. (多选题, 2.5分)C++语言中,所谓的字符串可能是指()A.字符串常量B.有终结符的字符数组。C.指向有终结符的字符数组的指针。D.标准库中扩充的string数据类型。 :ABCD正确答案:ABCD29.(多选题,2.5分)阅读如下代码,说明函数 f 的作用是什么?int f( const char j[)int i = 0;while(j[i] != 10') i++;return i;A. 计算给定字符串j的字节数。B.计算字符的ASCII编码。C.计算字符串j中哪个字符非0D.计算给定字符串j的长度。 : D正确答案:30. (多选题, 2.5分)阅读如下代码,说明函数stringLength的作用是什么?int stringLength( const char str[]) {int i = 0;while( str[i] != 10') i++;return i;A.计算字符串str的长度B.计算字符串str的字节数量C.计算字符串str中哪个字符非0D.计算第i个字符的ASCII编码 : A正确答案: A31.(多选题,2.5分)想要把字符串"123456"转换为 整型数值可以调用C++标准库中的哪些函数。A. atofB. atoiC. atolD. strtol : BCD正确答案: BCD32.(多选题,2.5分)如下代码在屏幕上的输出是( )int main0string str1("Hi, "), str2 = "Stop";cout << (str1 == str2) << endl;string str3= str1 + str2;cut << str3 << nd; int pos = str3.find('S');cout << pos << endl;str3[2] = '!'; << string str4 = str3.substr(4, 4);cout << str4 << endl;cout << str4.length0 << endl;string str5(5, 'z');cout << str5 << endl; return 0;D.Hi, Stop4Hi! StopStop4ZZZZZ :D正确答案:D33.(多选题, 2.5分)对于如下的变量today,其数据类型是什么,取值范围是什么?enum Weekday { Sunday=7, Monday=1,Tuesday, Wensday, Thursday, Friday, Saturday };Weekday today;A.数据类型是int,取值范围是Sunday、Monday、…、SaturdayB.数据类型是Weekday,取值范围是Sunday, Monday,SaturdayC.数据类型是unsigned int,取值范围是Sunday、 Monday、.、SaturdaydD.数据类型是int,取值范围是1、2、.、7 :B正确答案:B34.(多选题,2.5分)如下代码中,哪个是指针数组,哪个是数组指针。double* dpAry[5]; double* (*aryPointer)[5]= &dpAry;double* *pdpAry = dpAry;A. aryPointer是指针数组B. aryPointer是数组指针C. dpAry 是指针数组D. dpAry 是数组指针 :BC正确答案: BC35. (多选题, 2.5分)想要定义一个不变的指针,指向一个不变的常变量,如下哪个定义是正确的。const double a= 3.142;A. const double *const b= &a;B. double const*const b= &a;C. double const const *b= &a;D. const double const *b= &a; : AB正确答案:AB36. (多选题, 2.5分)在如下代码中定义的变量pdpAry的类型是( )。typedef double* AryOfDblPtr[5];AryOfDblPtr dpAry;AryOfDbiPtr *pdpAry = &dpAryA. 数组B.指针C.指向数组的指针D. 保存指针的数组 : BC正确答案:BC37, (多选题, 2.5分) (1)数组,用作函数实参的求值结果是什么?(2)数组,用作函数形参的类型是什么?(3)数组,用作函数返回值,返回的是什么?A.(1)数组首元素地址(2)指针(3)数组首元素地址 : A正确答案: A38. (多选题, 2.5分)如下函数findMax的类型是什么int findMax(int, int);A. int (int[], int);B. int findMax(int, int);C. int findMax(int*, int);D. int (int*, int); : AD正确答案: AD39. (多选题, 2.5分)如下代码中,变量findelems的类型是什么,元素类型是什么。typedef int (*FINDELEM)(int], int);FINDELEM findelems[4];A.变量findelems的类型是FINDELEM [4],元素类型是FINDELEM.B.变量findelems的类型是FINDELEM* [4],元素类型是FINDELEM.C.变量findelems的类型是FINDELEM [4],元素类型是FINDELEM*.D.变量findelems的类型是FINDELEM* [4],元素类型是FINDELEM* : A正确答案: A40.(多选题,2.5分)引用用作函数返回类型,必须保证( )。A.返回的被引用变量必须是一个左值。B.返回的被引用变量必须是一个右值C.被引用变量在函数返回后依然存在。D.被引用变量在函数返回后依然可见。 :AC正确答案:AC

61. (多选题,10分)以下关于文件读写的陈述正确的有( )。A.打开的文件必须关闭。B.文件流类似于一个管道,一端连接内存容器,一端连接磁盘文件。一C.文本文件中存放的是二进制序列,不过该二进制序列是与数据对应的ASCII字符编码,打开后直接可读。D.二进制文件中直接存放了数据的原始二进制码值,强行把码值解释为ASC11字符,其结果会乱码。: ABCD正确答案: ABCD2.(多选题,3.2分)如下代码是否存在问题class CDate ()class CPersonprivate:string name;CDatebirthday;public:CPerson(string nm): name(nm) {}mprivate:وCPerson father, mother, child; int main() {CFamily fm;return 0;A.编译错误,需要调用的构造函数不存在。B.解决方法之一是:添加CPerson的默认构造函数。C.解决方法之二是:为CPerson现有的单参数构造函数,添加默认实参值。D.解决方法之三是:编写CFamily的默认构造函数,在其初始化列表中明确调用CPerson现有的单参数构造函数.:正确答案: ABCD3. (多选题,3.2分)定制派生类的四个步骤是0。A.继承、发展、改造、重写B.继承、改造、发展、重写C.发展、继承、改造、重写D.重写、继承、改造、发展: B正确答案:B4. (多选题,3.2分)如下代码中,关于CStudent类的陈述正确的有()。private:class CPerson {string name;//姓名CDate birthday; //生日public://在基类成员函数中可以访问基类的私有成员string getname) const {return name; }};: private;string stuid; //学号double gpa;//平均绩点public:void print const; };A. CStudent类有两个不可访问成员: name, stuid.B.CStudent类有两个私有成员:stuid,gpa.C.CStudent类有两个公有成员:getname、print.D. CStudent类有两个不可访问成员: name, birthday.: 正确答案:BCD7.(多选题,3.2分)根据如下代码,正确的陈述有()protected:class CPerson {string name;CDate birthday;public:string getname0;private:int getage0;};cass CSudent: publcCPerson {private;using CPerson:name;string stuid;double gpa;protected:using CPerson:getname;using CPerson::getage;public:using CPerson:birthday;void print() const {};A. getage是CStudent类的不可访问成员, getname是CStudent类的保护成员。B.name是CStudent的私有成员。C. birthday是CStudent的公有成员。D. getage是CStudent类的保护成员。:ACD正确答案:ABC8.(多选题,3.2分)关于同名隐藏,正确的陈述有()A.当派生类中重新定义了某个基类成员,则派生类中会有两个同名的成员,一个是从基类继承来的,另一个是重新定义的,在派生类中访问该成员时必定访问的是派生类重新定义的,称为同名隐藏。B.发生同名隐藏时,基类成员并没有消失,只是直接找不到。通过作用域限定符:指明查找路径,可以显式地访问同名的基类成员。C.同名隐藏不是函数重载,同名隐藏发生在基类和派生类两个作用域中,而重载发生在同一个作用域中。D.同名隐藏只要求函数同名,其它不做要求;重载要求函数同名,此外还要求参数类型或者参数个数或者const修饰不同。: ABC正确答案:ABCD9. (多选题, 3.2分)给定如下代码,在CA类中的三个print函数之间是何关系() 。public:class CA{void print) const ()void print) {void print(int) {)};cassCB:puicCApublic:void print(string s) {)};int main() {CB b;b.print(1);b.CA:print(1);return 0;A.重载B. 同名隐藏C.覆盖D.多态: AB正确答案: A}10. (多选题,3.2分)给定如下代码, CA类中的三个print函数CB的print函数之间是何关系()public:class CAvoid print) const {}void print {}void print(int) {)};classCB:publicCApublicovoid print(string s) {)};int main0CB b;b.print(1);b.CA::print(1);return 0;A.重载B.同名隐藏C.覆盖D.多态:C正确答案: B11.(多选题,3.2分)给定如下代码,在main函数中哪一行代码是存在问题的()public:class CAvoid print) const {)void print0 {void print(int) {)};class CB : public CA {public:void print(string s) {)};int main)CB b;b.print("abc");b.print(1);b.CA::print(1);return 0;A. CB b;B.b.print("abc");C. b.print(1);D. b.CA:print(1);: B正确答案:C12.(多选题,3.2分)关于派生类对象的构造顺序,如下陈述正确的有()A. 先基类子对象,后成员子对象,最后派生类。B.基类构造函数 → 对象成员的构造函数 → 派生类构造函数;C.如果有多个基类,则按照它们在初始化列表中的初始化顺序进行;D.如果有多个成员对象,在按照它们在初始化列表中的初始化顺序进行。: ABCD正确答案: AB14. (多选题, 3.2分)关于赋值兼容规则,正确的陈述有()在公有继承的情况下,派生类对象可以被当作基类对象来使用,反过来也是可以的。B.派生类对象,可以用来初始化或者赋予基类对象;C.派生类对象,可以用来初始化基类引用;D.派生类对象的地址,可以用来初始化或者赋予基类指针。: ABCD正确答案:BCD15. (多选题, 3.2分)假设有如下图示的继承关系,则如下代码错误的是哪一行()CStudent stud("高星宇",18, "200808243", 3.5);CPerson psn1 = stud;CPerson psn2;psn2 = stud;stud = psn2;CPersonCStudentCTeacherA. CPerson psn1 = stud;B. CPerson psn2;C. psn2 = stud;D. stud = psn2;正确答案: D16. (多选题,3.2分)假设有如下图示的继承关系,则如下代码错误的是哪一行()。CStudent stud("高星宇", 18, "200808243", 3.5);CPerson &rpsn = stud;CPerson *ppsn = &stud;CStudent &rstud = rpsn;CStudent *pstud = &rpsn;CPersonCStudentCTeacherA. CPerson &rpsn = stud;B. CPerson *ppsn = &stud;C. CStudent &rstud =rpsn;D. CStudent *pstud = &rpsn;正确答案:CD17. (多选题,3.2分)dynamic_cast用于运行期的动态类型转换,正确的陈述有()A. dynamic_cast在运行期间进行类型检查,如果引用或指针所指对象不是转换的目标类型对象,则转换失败,且给出错误指示。B. dynamic_cast转换到指针,则转换失败的结果指针为0值;C. dynamic_cast转换到引用,则转换失败会抛出一个bad_cast异常。D. dynamic_cast可以转换到对象,转换失败会抛出一个bad_cast异常。: ABC正确答案:ABC

62. 

63. 

64. 

65. 

66. 

67. 

68. 

69. 

70. 

71. 

72. 

73. 

74. 

75. 

76. 

77. 

78. 

79. 

80. 

81. 

82. 

83. 

84. 

85. 

86. 

87. 

88. 

89. 

90. 

91. 

92. 

93. 

94. 

18. (多选题, 3.2分)如果要使如下三个对象可以进行输出运算,则需要对基类CPerson扩充输出运算符,正确的形式是() 。CPerson psn ("高星宇", 18);CStudent stud("马里奥", 28, "200808243", 3.5);CTeacher tchr("高佳林",35,"009527", "教授");cout<<psn;cout<<stud;cout<<tchr;。A. ostream& operator<< (ostream&, CPerson&);B. ostream& operator<< (ostream, CPerson&);C. ostream& ostream::operator<< (CPerson&);D. ostream& ostream:operator<< (CPerson);: A正确答案: Apolymorphism)是因对象而行事,如下陈述正确的有()A.同一种行为,在面对不同类型的对象时表现出多种不同的形态。B.同一个函数名具有多个函数实现版本(函数多版本) ,调用该函数时自动选择合适的函数实现版本(函数绑定)C.函数重载,实现编译期多态。D.虚函数,实现运行期多态。: AD正确答案: ABCD20.(多选题,3.2分)给定如下的三个运算符重载函数,正确的陈述有()CMatrix operator *(const CMatrix &, double); CMatrix operator *( double, const CMatrix &); CMatrix operator *(const CMatrix &, const CMatrix &); double m[][3] = ([1, 2, 3}, {1, 2, 7}, {4, 9, 2}, {6, 1, 5}};CMatrix mx1(4, 3,&m[0][0]); //根据二维数组产生矩阵CMatrix mx2(3,2.0); //对角线元素都是2.0的对角阵CMatri& mx3=mx1*mx2; //绑定矩阵乘法版本: A*Bcout<<mx3*2<<endl; //绑定数乘版本: A*2cout<<2*mx3<<endl; //绑定数乘版本: 2*AA. 三个函数之间是重载关系。B. mx1 * mx2, 调用CMatrix operator *(const CMatrix &, const CMatrix &);C. mx3*2,调用CMatrix operator *(const CMatrix &, double);D. 2*mx3,调用CMatrix operator *( double, const CMatrix &);: ABCD正确答案:ABCD21.(多选题,3.2分)C++语言通过虚函数实现运行期多态,关于虚函数正确的陈述有()A.虚函数,是用virtual修饰的类的成员函数。B.虚函数,可以有static修饰。C.虚函数,可以有const修饰。D.虚函数,可以是内联成员函数。:ACD正确答案:AC22.(多选题,3.2分)如果在派生类中重新定义基类的虚函数,称为()苹A.重载B.同名隐藏C.覆盖D.改造:C正确答案:C23.(多选题,3.2分)虚函数的派生类版本基类版本必须具有()A.相同的函数名B.相同的参数个数和参数类型C.相同或赋值兼容的返回值类型D. 相同的函数体。: ABC正确答案: ABC24.(多选题,3.2分)关于重载、同名隐藏、覆盖,正确的陈述有()A. 重载(overlord)要求:函数同名,同作用域。B.同名隐藏(overhide)要求:函数同名,不同作用域(基类/派生类)C. 覆盖(override)要求:虚函数,函数同名同原型,不同作用域(基类/派生类)D.覆盖必定会导致同名隐藏。:ABC正确答案:ABCD26.(多选题,3.2分)触发运行期多态必须满足的条件有(A.被调用的成员函数必须是虚函数;B.必须使用引用或者指针来调用该虚函数。C.被调用的成员函数必须是纯虚函数;D.被调用的成员函数必须是const成员函数;: AB正确答案: AB27.(多选题,3.2分)编译器为支持运行期多态,悄悄的做了哪些事情()A.为多态类创建虛函数表;B.为对象添加指向虚函数表的指针成员;C.改写虚函数调用的代码。D.为所有的类都创建虚函数表;: ABC正确答案:ABC28. (多选题,3.2分)给定如下代码,请问CParttimeTeacher类的虚函数表中有哪些条目()。正确答案:D29.(多选题,3.2分)何时需要把析构函数设置成virtual的()A.需要为析构函数启用运行期绑定机制的时候。B.对于包含虚函数的多态类,通常需要将析构函数声明为虚函数。C.如果类中不包含虚函数,则不要把析构函数声明为虚函数。D.所有类都应该把析构函数设置成虚函数。: B正确答案:ABC30.(多选题,3.2分)关于抽象类,正确的陈述有()A.抽象类是不允许创建对象的类。抽象类的主要任务是约定派生类必须具有的行为能力。B.抽象类是包含纯虚函数的类。C.抽象类不允许产生对象。但是,可以定义抽象类的指针和引用。D.抽象类的派生类,要成为能够产生对象的具体类,就必须为抽象类的全部纯虚函数提供定义: ABC正确答案: ABCD31. (多选题, 3.2分)关于纯虚函数、虚函数、非虚成员函数,正确的陈述有() .A.纯虚函数只约定了函数接口派生类只能继承纯虚函数的接口。B.虚函数约定函数接口并给出默认函数实现;派生类会继承其函数接口及其默认实现,并可以覆盖默认实现。C.非虚函数约定函数接口并给出强制实现派生类必须继承函数接口及其强制实现。D.非虚函数约定函数接口并给出默认实现派生类会继承函数接口及其默认实现,并可以覆盖默认实现。: ABC正确答案: ABC32. (多选题,3.9分)给定如下的CSimpson类,可以利用辛普森公式近似求解一个函数的定积分。class CSimpson{ //抽象类double a,b;//积分下限和上限const int n;//积分近似的区间间隔数public:CSimpson(double ra=0,double rb=0, int rn=1) : a(ra), b(rb), n(rn)double integrate){/*函数体代码略去*/}virtual double f(double x) =0;};如下哪些派生类可以用于求f(x)= sin(2*x)+cos(5*x)在区间[0,1]上的定积分。AC

 


哈哈哈的评论 (共 条)

分享到微博请遵守国家法律