收藏 分享(赏)

C++选择题2.doc

上传人:HR专家 文档编号:11559989 上传时间:2020-06-24 格式:DOC 页数:36 大小:54.50KB
下载 相关 举报
C++选择题2.doc_第1页
第1页 / 共36页
C++选择题2.doc_第2页
第2页 / 共36页
C++选择题2.doc_第3页
第3页 / 共36页
C++选择题2.doc_第4页
第4页 / 共36页
C++选择题2.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、1. 在语句cindata;中,cin是(类与对象3)C+的关键字类名对象名函数名2. 有如下程序:#include using namespace std;class Complexdouble re, im;public:Complex(double r, double i) : re(r), im(i) double real() const return re; double image() const return im; Complex& operator += (Complex a)re += a.re;im += a.im;return *this;ostream& opera

2、tor (ostream& s, const Complex& z)return s(z.real(),z.image();int main()Complex x(1,-2), y(2,3);cout (x+=y) endl;return 0;执行这个程序的输出结果是(1,-2)(2,3)(3,5)(3,1)3. 执行如下的程序段后,输出结果是( )。cout.fill(*); cout.width(6); cout.fill(#); cout 123 endl;#123123#*123123*4. 在进行完任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态;其中只能用于检测输入流状

3、态的操作函数名称是()faileofbadgood5. 在C+语言中,打开一个文件就是将这个文件与一个( )建立关联。结构流类对象6. 下面关于C+流的叙述中,正确的是( )。cin是一个输入流对象可以用ifstream定义一个输出流对象执行语句序列char *y=PQMN; couty; 将输出字符串 PQMN的地址执行语句序列char x80; cin.getline(x,80); 时,若键入Happy new year则x中的字符串是Happy7. 在说明语句:int *f();中,标识符f代表的是().一个用于指向整型数据的指针变量一个用于指向一维数组的行指针一个用于指向函数的指针变量

4、一个返回值为指针型的函数名8. 有如下函数模板定义:template T func(T x, T y) return x*x+y*y; 在下列对func的调用中,错误的是( )。 func(3, 5);func(3.0, 5.5); func (3, 5.5); func(3, 5.5);在下列函数原型中,可以作为类AA构造函数的是( )。void AA(int);int AA( );AA(int)const;AA(int);9. 有如下函数模板定义:template T func(T x,T y) return x*x+y*y;在下列对 func 的调用中,错误的是( )。func(3,5)

5、;func(3.0,5.5);func(3,5.5);func(3,5.5);10. 有如下函数模板templateT square(T x) return x* x; 其中T是函数形参函数实参模板形参模板实参11. 在C+中,用于实现运行时多态性的是( )。内联函数重载函数模板函数虚函数12. #include using namespace std;class Apublic:virtual void func1( ) coutA1; void func2( ) coutA2; ;class B:public Apublic:void func1( ) coutB1; void func2

6、( ) coutfunc1( );p-func2( );return 0;运行此程序,屏幕上将显示输出B1B2A1A2B1A2A1B213. 要实现运行时的多态性,必须通过( )调用虚函数基类指针派生类指针对象名派生类名14. 要实现动态联编,派生类中的虚函数( )返回的类型可以与虚函数的原型不同参数个数可以与虚函数的原型不同参数类型可以与虚函数的原型不同以上都不对15. 要实现动态联编,必须通过( )调用虚函数对象指针成员名限定对象名派生类名16. 虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多

7、态调用。有如下程序:#include using namespace std;class Basepublic:virtual void f()coutf0+;void g()coutg0+;class Derived:public Basepublic:void f()coutf+;void g()coutf();p-g();return 0;运行时输出的结果是( )。f+g+f0+g+f+g0+f0+g0+17. 下面四个选项中,( )是用来声明虚函数的。virtualpublicincludeusing namespace18. 下面描述中,正确的是( )。virtual可以用来声明虚函

8、数含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类即使基类的构造函数没有参数,派生类也必须建立构造函数静态数据成员可以通过成员初始化列表来初始化19. 下面关于C+语言的描述错误的是( )。C+语言支持数据封装C+语言中引入友元没有破坏封装性C+语言允许函数名和运算符重载C+语言支持动态联编20. 有如下程序#includeusing namespace std;class Baseprotected:Base() cout A; Base(char c) cout c; ;class Derived :public Basepublic:Derived(char c) cout c;

9、;int main()Derived d1(B);return 0;执行这个程序屏幕上将显示输出_。BBAABBB21. 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。派生类的对象可以赋给基类的对象派生类的对象可以初始化基类的引用派生类的对象可以直接访问基类中的成员派生类的对象的地址可以赋给指向基类的指针22. 在公有继承的情况下,允许派生类直接访问的基类成员包括?公有成员公有成员和保护成员公有成员保护成员和私有成员保护成员23. 在公有继承的情况下,基类成员在派生类中的访问权限() 。受限制保持不变受保护不受保护24. 在多继承中,公有派生和私有派生对于基类成员

10、在派生类中的可访问性与单继承的规则( )。完全相同完全不同部分相同,部分不同以上都不对25. 下面叙述不正确的是()。基类的保护成员在派生类中仍然是保护的成员基类的保护成员在公有派生类中仍然是保护的基类的保护成员在私有派生类中仍然是私有的对基类成员的访问必须是无二义性的26. 下面描述中,表达错误的是 ()公有继承时基类中的public成员在派生类中仍是public的公有继承时基类中的private成员在派生类中仍是private的公有继承时基类中的protected成员在派生类中仍是protected的私有继承时基类中的public成员在派生类中是private的27. 运用运算符delet

11、e删除一个动态对象时( )。系统首先为该动态对象调用构造函数,再释放其占用的内存系统首先释放该动态对象占用的内存,再为其调用构造函数系统首先为该动态对象调用析构函数,再释放其占用的内存系统首先释放动态对象占用的内存,再为其调用析构函数28. 有如下类声明:class MyBASEint k;public:void set(int n) k=n;int get( )const return k; ;class MyDERIVED: protected MyBASEprotected:int j;public:void set(int m, int n) MyBASE:set(m); j=n;in

12、t get( )const return MyBASE:get( )+j; ;则类MyDERIVED中保护的数据成员和成员函数的个数是( )。432129. 有如下类定义:class MyBaseint k;public: MyBase(int n=0):k(n) int value()return k;class MyDerived: MyBase int j;public; MyDerived(int i): j(i) int getK()const return k; int getJ()constreturn j;在一个派生类对象结束其生命周期时( )。先调用派生类的析构函数后调用基类

13、的析构函数先调用基类的析构函数后调用派生类的析构函数如果基数没有定义析构函数,则只调用派生类的析构函数如果派生类没有定义析构函数,则只调用基类的析构函数30. 执行下列语句后的结果为().int x=3,y;int *px=&x;y=*px+;x=3,y=4x=3,y=3x=4,y=4x=3,y不知48. 在用关键字class定义的类中,以下叙述正确的是( )。在类中,不作特别说明的数据成员均为私有类型在类中,不作特别说明的数据成员均为公有类型类成员的定义必须是成员变量定义在前,成员函数定义在后类的成员定义必须放在类定义体内部31. 有如下程序:includeclass BASEchar c;

14、public:BASE(char n) : c(n)virtual BASE() cout c; ;class DERIVED:public BASEchar c;public:DERIVED(char n) : BASE(n + 1), c(n)DERIVED() cout c; ;int main()DERIVED D(X);return 0;执行上面的程序将输出( )。XYYXXY32. 在以下new和delete运算符使用中,错误的是().char *p=new char10; deletep;char *p=new char5; delete p; p=new char10; del

15、ete p;char *p=new char; delete p;char *p=new int10; delete p;33. 有如下程序:#include using namespace std;class BASEpublic:BASE( ) coutBASE;class DERIVED: public BASE public:DERIVED( ) coutDERIVED;int main( )DERIVED x; return 0 ;执行后的输出结果是( )。BASEDERIVEDBASEDERIVEDDERIVEDBASE34. 有如下程序:#include using namesp

16、ace std;class A public:A( ) cout A; ;class B public: B( ) cout B; ;class C : public A B b;public:C( ) cout C; ;int main( ) C obj; return 0; 执行后的输出结果是( )。CBABACACBABC35. 有如下程序:#include using namespace std;class Apublic:A(int i)x=i;void dispa()coutx,;private:int x;class B:public Apublic:B(int i):A(i+1

17、0)x=i;void dispb()dispa();coutxendl;private:int x;int main()B b(2);b.dispb();return 0;运行时输出的结果是10, 212,1012,22,236. 用new运算符创建一维数组的正确形式是().int *p=new a10;float *p=new float10;int *p=new int10=0;int *p=new int5=1,2,3,4,5,6;37. 有如下程序:#include using namespace std;class Apublic:A() cout A; A() cout A; ;c

18、lass B : public AA* p;public:B() cout B; p = new A(); B() cout B; delete p; ;int main()B obj;return 0;执行这个程序的输出结果是BAAABAABABAABAABAAABA ABA49. 重载运算符的实质是函数调用,如果重载了后置单目运算符“+”,执行C+,则相当于执行了哪个函数( )c.operator+(c,0)c.operator+( )operator+()operator+(c,0)38. 应在下列程序划线处填入的正确语句是()#includeclass Base public:void

19、 fun()coutBase:funENDL;class Derived:public Base void fun()_ /显示调用基类的函数fun()coutDerived:funfun();39. 有如下程序#include#includeusing namespace std;class MyClasspublic: MyClass()coutA; MyClass(char c )coutc; MyClass()coutB;void main() MyClass p1,*p2; p2=new MyClass(X); delete p2;执行这个程序幕上将显示输出_。ABXABXBAXBA

20、XBB40. 有如下程序:#includeusing namespace std;class Pointpublic:static int number;public:Point()number+;Point()number-;int Point:number=0;void main()Point *ptr;Point A,B;Point* ptr_point=new Point3;ptr=ptr_point;Point C;coutPoint:numberendl;deleteptr;运行时输出的结果是346741. 以下程序的运行结果是 _。#include stdio.hmain( )i

21、nt a =1,2,3,4,5,6,7,8,9,10,11,12;int *p=a+5,*qNULL;*q=*(p+5);cout *p*q;运行后报错6 66 125 542. 有如下程序:#include using namespace std;class Test public:Test( ) n+=2; Test( ) n-=3; static int getNum( ) return n; private:static int n;int Test:n = 1;int main( )Test* p = new Test;delete p;cout n= Test:getNum( )

22、endl;return 0;执行后的输出结果是( )。n=0n=1n=2n=343. 以下程序段的输出结果是().char *alp=ABC,DEF,GHI; int j; coutalp1;ABDDEF44. 以下程序的输出结果是_。main( ) int i,x33=9,8,7,6,5,4,3,2,1,*p=&x11;for(i=0;i4;i+=2) coutpi;5 25 15 39 745. 以下程序的输出结果是().#include void main() char s=123,*p; p=s; cout*p+endl;1231332146. 以下程序的输出结果是( )。#inclu

23、de void main() 47. char s=12134211,*p;int v1=0,v2=0,v3=0,v4=0;for (p=s;*p;p+)switch(*p)case 1:v1+;case 3:v3+;case 2:v2+;default: v4+;coutv1,v2,v3,v4endl;4,2,1,14,7,5,87,3,2,18,8,8,847.已知数组A和指针p定义为:int A2010,*p;,要使p指向A的首元素,正确的赋值表达式是( )。p=&A 或 p=A00p=A 或 p=&A00p=&A0 或 p=A00p=A0 或 p=&A0050. 要使语句p=new d

24、ouble20;能够正常执行,变量p应定义为( )。double p20;double p;double (*p)20;double *p;51. 要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是 。int vect=30,50,-88;int vect=30,50,-88,0,0;int vect5=30,50,-88;int vect5=30,50,-88,0,0;52. 下面说明不正确的是().char a10=china;char a10,*p=a;p=chinachar *a;a=china;char a10,*p;p=

25、a=china53. 重载赋值操作符时,应声明为( )函数 。友元虚成员多态54. 在一个类中可以对一个操作符进行()重载。1种2种以下3种以下多种55. 在下列函数原型中,可以作为类AA构造函数的是( )。void AA(int)int AA()AA(int)constAA(int)56. 在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( )。虚函数友元函数构造函数析构函数57. 在定义构造数据类型时,不能()。说明变量说明存储类型初始化末尾不写分号58. 在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符

26、。则 operator+ 有( )个参数,operator* 有( )参数。2、22、11、21、159. 在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数重载的运算符。下列叙述中正确的是( )。operator+有两个参数,operator*有两个参数operator+有两个参数,operator*有一个参数operator+有一个参数,operator*有两个参数operator+有一个参数,operator*有一个参数60. 在C+语言中,数据封装要解决的问题是( )。数据的规范化便于数据转换避免数据丢失防止不同模块之间数据的非法访问61. 有如下类声明:c

27、lass Foo int bar; ;则Foo类的成员bar是( )。公有数据成员公有成员函数私有数据成员私有成员函数62. 有如下类声明:class SAMPLEint n;public:SAMPLE(int i=0):n(i)void setValue(int n0);下列关于 getValue 成员函数的实现中,正确的是( )。SAMPLE:setValue(int n0) n=n0;void SAMPLE:setValue(int n0) n=n0;void setValue(int n0) n=n0;(int n0) n=n0;63. 有如下程序:#includeusing name

28、space std;class testprivate:int a;public:test()coutconstructorendl;test(int t ):a(t) coutaendl;test(const test &_test)a=_test.a;coutcopy constructorendl;test()coutdestructorendl;int main()test A(3);return 0;运行时的输出结果是( )。33 destructorcopy constructorconstructor64. 有关析构函数的说法,不正确的是( )。析构函数有且仅有一个析构函数和构造

29、函数一样可以有形参析构函数的功能是在系统释放对象之前作一些内存清理工作析构函数无任何函数类型65. 有如下程序:#includeusing namespace std;class Apublic:static int a;void init()a=1;A(int a=2)init();a+;int A:a=0;A obj;int main()coutobj.a;return 0;运行时输出的结果是012366. 以下有关静态数据成员函数的叙述不正确的是( )。静态成员函数属于整个类对静态成员函数的引用不允许使用对象名在静态成员函数中不能直接引用类的非静态成员使用类名可以直接调用其静态成员函数6

30、7. 以下关于类和对象叙述正确的是().一个类只能有一个对象一个对象可以属于几个不同的类对象是类的一个具体实例一个类中可以有本类的对象68. 有如下程序:#include using namespace std;class Samplefriend long fun(Sample s);public:Sample(long a ) x=a;private:long x;long fun(Sample s)if(s.x2) return 1;return s.x*fun(Sample(s.x -1);int main()int sum=0;for(int i=0;i6;i+)sum+=fun(S

31、ample(i);coutsum;return 0;运行时输出的结果是120161543469. 以下关于typedef的叙述正确的是()。用typedef可以定义各种类型名,但不能用来定义变量用typedef可以增加新类型用typedef只是将已存在的类型用一个新的名字来代表使用typedef便于程序的通用70. 有如下程序:#include using namespace std;class AAint n;public:AA(int k):n(k) int get( ) return n;int get( )const return n+1;int main( )AA a(5);cons

32、t AA b(6);couta.get( )b.get( );return 0;执行后的输出结果是( )。5557757771. 以下关键字不能用来声明类的访问权限的是_。publicstaticprotectedprivate72. 以下各选项企图说明一种新的类型名,其中正确的是()。typedef v1 int;typedef v2=int;typedef int v3;typedef v4: int;73. 已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是( )。这是运算符-的重载运算符函数这个函数所重载

33、的运算符是一个一元运算符这是一个成员函数这个函数不改变类的任何数据成员的值74. 已知X类,则当程序执行到语句:X array3;时,调用了( )次构造函数。012375. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。void print( ) const;const void print( );void const print( );void print(const);76. 一个类的友元函数或友元类能够通过成员操作符访问该类的( )。私有成员保护成员公有成员所有成员77. 下述静态成员的特性中,( )是错误的。静态成员函数不能利用this指针静态

34、数据成员要在类体外进行初始化引用静态数据成员时,要在静态数据成员名前加和作用域运算符静态数据成员不是所有对象所共有的78. 下面有关重载函数的说法中正确的是()重载函数必须具有不同的返回值类型;重载函数形参个数必须不同;重载函数必须有不同的形参列表重载函数名可以不同;79. 下面说法中,正确的是( )一个类只能定义一个构造函数,但可以定义多个析构函数一个类只能定义一个析构函数,但可以定义多个构造函数构造函数与析构函数同名,只要名字前加了一个求反符号()构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以80. 下面关于运算符重载的描述错误的是( )。运算符重载不

35、能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构不是所有的运算符都可以进行重载运算符函数的调用必须使用关键字operator在C+语言中不可通过运算符重载创造出新的运算符81. 下面关于友元的描述中,错误的是( )。友元函数可以访问该类的私有数据成员一个类的友元类中的成员函数都是这个类的友元函数友元可以提高程序的运行效率类与类之间的友元关系可以继承1. 设有说明:ofstream outfile;则执行语句:outfile.open(data1.txt);后,文件:data1.txt是一个( )。/(类与对象4)用于输入的文本文件用于输出的文本文件用于输入的二进制文件用于输

36、出的二进制文件2.若执行fopen函数时发生错误,则函数的返回值是()。地址值01EOF3.下面对模板的声明,正确的是( )templatetemplatetemplatetemplate4. 下列函数模板的定义中,合法的是( )。templateT abs(T x)return x0?-x:x;template classT abs(T x)return x0 ?-x:x;template T abs(T x)return x0 ?-x:x;template T abs(T x)return x0 ?-x:x;5. 下列关于模板的叙述中,错误的是( )。模板声明中的第一个符号总是关键字tem

37、plate在模板声明中用 括起来的部分是模板的形参表类模板不能有数据成员在一定条件下函数模板的实参可以省略6. 下列关于模板的说法正确的是( )模板的实参在任何时候都可以省略类模板与模板类所指的是同一概念类模板的参数必须是虚拟类型的类模板中的成员函数全部都是模板函数7. 下面4个选项中,( )是用来声明虚函数的。virtualpublicusingfalse8. 下列程序的运行结果为#includetemplateclass FF TT a1, a2, a3;public:FF(TT b1, TT b2, TT b3)a1=b1; a2=b2; a3=b3;TT Sum()return a1+a2+a3;void main() FF x(int(1.1),2,3),y(int(4.2),5,6);coutx.Sum() y.Sum()endl;6.1 15.26 156 15.26.1 159. 下列属于动态多态的是( )函数重载运算符重载虚函数构造函数重载10. 下列哪种说法是正确的( )不能声明虚构造函数不能声明虚析构函数不能定义抽象类的对象,但可以定义抽象类的指针或引用纯虚函数定义中不能有函数体11. 下列描述中,( )是抽象类的特征可以说明虚函数

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报