c++选择题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

11.在语句cindata;中,cin是C++的关键字类名对象名函数名2.有如下程序:#includeiostreamusingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{returnre;}doubleimage()const{returnim;}Complex&operator+=(Complexa){re+=a.re;im+=a.im;return*this;}};ostream&operator(ostream&s,constComplex&z){returns’(’z.real()’,’z.image()’)’;}intmain(){Complexx(1,-2),y(2,3);cout(x+=y)endl;return0;}执行这个程序的输出结果是(1,-2)(2,3)(3,5)(3,1)23.执行如下的程序段后,输出结果是()。cout.fill(’*’);cout.width(6);cout.fill(’#’);cout123endl;###123123###***123123***cout.fill('*');//设置用'*'填充。cout.width(6);//设置输出格式宽为6,就是长度为6吧。cout.fill('#');//设置用'#'填充。这里覆盖了上面那个cout.fill('*');cout123endl;4.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()faileofbadgood5.在C++语言中,打开一个文件就是将这个文件与一个()建立关联。结构流类对象6.下面关于C++流的叙述中,正确的是()。cin是一个输入流对象可以用ifstream定义一个输出流对象执行语句序列char*y=PQMN;couty;将输出字符串PQMN的地址执行语句序列charx[80];cin.getline(x,80);时,若键入Happynewyear则x中的字符串是Happy37.在说明语句:int*f();中,标识符f代表的是().一个用于指向整型数据的指针变量一个用于指向一维数组的行指针一个用于指向函数的指针变量一个返回值为指针型的函数名8.在下列函数原型中,可以作为类AA构造函数的是()。voidAA(int);intAA();AA(int)const;AA(int);解析AA(int)构造函数的函数名与类名相同而且没有返回值,更不能是const9.有如下函数模板定义:templateclassTTfunc(Tx,Ty){returnx*x+y*y;}在下列对func的调用中,错误的是()。func(3,5);func(3.0,5.5);func(3,5.5);funcint(3,5.5);解析函数模版实例时会根据你的参数而自动转换,就好像A中3,5,T会自动变成int.而D,已经说明是int类型,所以5.5会变成5.但是C的话,3和5.5,此时就不知是int或者是double/float了,除非3改写成3.010.有如下函数模板templateclassTTsquare(Tx){returnx*x;}其中T是函数形参函数实参模板形参模板实参11.在C++中,用于实现运行时多态性的是()。内联函数重载函数模板函数虚函数412.#includeiostreamusingnamespacestd;classA{public:virtualvoidfunc1(){coutA1;}voidfunc2(){coutA2;}};classB:publicA{public:voidfunc1(){coutB1;}voidfunc2(){coutB2;}};intmain(){A*p=newB;p-func1();p-func2();return0;}运行此程序,屏幕上将显示输出B1B2A1A2B1A2A1B213.要实现运行时的多态性,必须通过()调用虚函数基类指针派生类指针对象名派生类名解析不是使用了虚函数就能实现运行时的多态性,实现运行时多态性要满足以下4个条件:1.要有一个继承层次3.在派生类中要对基类中的虚函数进行重定义2.在基类要定义虚函数4.要通过基类指针(或基类引用)来调用虚函数14.要实现动态联编,派生类中的虚函数()返回的类型可以与虚函数的原型不同参数个数可以与虚函数的原型不同参数类型可以与虚函数的原型不同以上都不对解析虚函数的意思就是程序是可以被覆盖的,既然是可以被覆盖,那么函数的返回类型,函数的名字,函数的参数列表都应该一样515.要实现动态联编,必须通过()调用虚函数对象指针成员名限定对象名派生类名调用虚函数操作的是指向对象的指针或者对象引用:或者是由成员函数调用虚函数,反之就无法实现动态联编16.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:#includeiostreamusingnamespacestd;classBase{public:virtualvoidf(){coutf0+;}voidg(){coutg0+;}};classDerived:publicBase{public:voidf(){coutf+;}voidg(){coutg+;}};intmain(){Derivedd;Base*p=&d;p-f();p-g();return0;}运行时输出的结果是()。f+g+f0+g+f+g0+f0+g0+617.下面四个选项中,()是用来声明虚函数的。virtualpublicincludeusingnamespace18.下面描述中,正确的是()。virtual可以用来声明虚函数含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类即使基类的构造函数没有参数,派生类也必须建立构造函数静态数据成员可以通过成员初始化列表来初始化19.下面关于C++语言的描述错误的是()。C++语言支持数据封装C++语言中引入友元没有破坏封装性C++语言允许函数名和运算符重载C++语言支持动态联编20.有如下程序#includeiostreamusingnamespacestd;classBase{protected:Base(){cout’A’;}Base(charc){coutc;}};classDerived:publicBase{public:Derived(charc){coutc;}};intmain(){Derivedd1(’B’);return0;}执行这个程序屏幕上将显示输出______。BBAABBB721.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。派生类的对象可以赋给基类的对象派生类的对象可以初始化基类的引用派生类的对象可以直接访问基类中的成员派生类的对象的地址可以赋给指向基类的指针解析C.派生类无法访问基类的私有成员22.在公有继承的情况下,允许派生类直接访问的基类成员包括?公有成员公有成员和保护成员公有成员保护成员和私有成员保护成员23.在公有继承的情况下,基类成员在派生类中的访问权限()。受限制保持不变受保护不受保护24.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。完全相同完全不同部分相同,部分不同以上都不对25.下面叙述不正确的是()。基类的保护成员在派生类中仍然是保护的成员基类的保护成员在公有派生类中仍然是保护的基类的保护成员在私有派生类中仍然是私有的对基类成员的访问必须是无二义性的26.下面描述中,表达错误的是()公有继承时基类中的public成员在派生类中仍是public的公有继承时基类中的private成员在派生类中仍是private的8公有继承时基类中的protected成员在派生类中仍是protected的私有继承时基类中的public成员在派生类中是private的27.运用运算符delete删除一个动态对象时()。系统首先为该动态对象调用构造函数,再释放其占用的内存系统首先释放该动态对象占用的内存,再为其调用构造函数系统首先为该动态对象调用析构函数,再释放其占用的内存系统首先释放动态对象占用的内存,再为其调用析构函数28.有如下类声明:classMyBASE{intk;public:voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;}};则类MyDERIVED中保护的数据成员和成员函数的个数是()。4321正确答案:B解析:在保护派生的单继承中,基类的公有数据成员和成员函数在派生类中成为保护成员。intk是私有成员,不被派生类所继承;929.有如下类定义:classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue(){returnk;}};classMyDerived:MyBase{intj;public;MyDerived(inti):j(i){}intgetK()const{returnk;}intgetJ()const{returnj;}};在一个派生类对象结束其生命周期时()。先调用派生类的析构函数后调用基类的析构函数先调用基类的析构函数后调用派生类的析构函数如果基数没有定义析构函数,则只调用派生类的析构函数如果派生类没有定义析构函数,则只调用基类的析构函数30.执行下列语句后的结果为().intx=3,y;int*px=&x;y=*px++;x=3,y=4x=3,y=3x=4,y=4x=3,y不知31.在用关键字class定义的类中,以下叙述正确的是()。在类中,不作特别说明的数据成员均为私有类型在类中,不作特别说明的数据成员均为公有类型类成员的定义必须是成员变量定义在前,成员函数定义在后类的成员定义必须放在类定义体内部1032.有如下程序:#includeclassBASE{charc;public:BASE(charn):c(n){}virtual~BASE(){coutc;}};classDERIVED:publicBASE{charc;public:DERIVED(charn):BASE(n+1),c(n){}~DERIVED(){coutc;}};intmain(){DERIVEDD(’X’);return0;})。XYYXXY33.在以下new和delete运算符使用中,错误的是().char*p=newchar[10];delete[]p;char*p=newchar[5];delete[]p;p=newchar[10];delete[]p;char*p=newchar;deletep;char*p=newint[10];deletep;34.有如下程序:#includeiostreamusingnamespacestd;classBASE{11public:~BASE(){coutBASE;}};classDERIVED:publicBASE{public:~DERIVED(){coutDERIVED;}};intmain(){DERIVEDx;return0;}执行后的输出结果是()。BASEDERIVEDBASEDERIVEDDERIVEDBASE35.有如下程序:#includeiost

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功