C++试题题库和答案集锦_第1页
C++试题题库和答案集锦_第2页
C++试题题库和答案集锦_第3页
C++试题题库和答案集锦_第4页
C++试题题库和答案集锦_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业判断题1.构造函数、析构函数、友元函数都属于类的成员函数。F2.静态数据成员是类的所有对象共享的数据。T3.可以将派生类对象的值赋给基类对象,也可以将基类对象的值赋给派生类对象。F4.派生类默认的继承方式为public。Fprivatr5.类模板实例化的过程是类模板-模板类-对象。T6.多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。T7.构造函数可以重载,析构函数也可以重载。F8.如果派生类的成员函数的原型与基类中被定义为虚函数的成员函

2、数原型相同,那么,这个函数自动继承基类中虚函数的特性。T9.设A为类,则A类的复制构造函数原型声明为void A(A&)。10.在公有继承中,基类中只有公有成员对派生类是可见的。F11.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。T 12.虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。T13.派生类是从基类派生出来,它不能生成新的派生类。F14.当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针后,再调用成员函数。T15.对象是属性和行为的集合。T16.模板的使用是为了加强类的封装性。F17.函数定义时在函数参数表后加=0表示该函数为

3、纯虚函数。F18.可以以”类名: 静态成员函数(实参表)”和” 对象.静态成员函数(实参表)”两种形式调用类的静态成员函数。T19.语句int a(5), *p; *p=a; 能够正常执行。F20.设A为类,则A *(*fpA5)()的正确描述是:fpA是一个数组,数组的5个元素都是A类对象。F21.重载双目运算符为成员函数时,一般将左操作数作为函数的参数。F【右边的】22.可以将插入运算符” 重载为类的成员函数。F23.C+语言中,既允许单继承,又允许多继承。T24.派生类的继承方式有两种:公有继承和私有继承。F25.在私有继承中,基类中所有成员对派生类的对象都是不可见的。T26.在保护继承

4、中,对于垂直访问同与公有继承,而对于水平访问同于私有继承。27.派生类是它的基类的组合。T28.构造函数可以被继承。T 29.析构函数不能被继承。T30.子类型是不可逆的。T31.只要是类M继承了类N,就可以类M是类N的子类型。F32.如果A类型是B类型的子类型,则A类型必然适应于B类型。F33.多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。T34.单继承情况下,派生类对基类的成员的访问也会出现二义性。f 35.解决多继承情况下出现的二义性的方法之一就是使用成员名限定法。T单选题派生类的构造函数的成员初始化列中,不能包含( C )。基类的构造函数;派生类中子对

5、象的初始化;基类的子对象的初始化;派生类中一般数据成员的初始化。 面向对象程序设计思想的主要特征不包括( B )继承性功能分解,逐步求精封装性和信息隐藏多态性面向对象程序设计中,( B )为程序的组成单元。 语句类主函数子函数假设已经有定义char * const name=”chen”;下面的语句中正确的是:(B) name3=q;name=”lin”;name= new char5;coutb ? a : b;extern long index;在C+语言中,函数返回值的类型是由( B )定义的。 return 语句中的表达式类型定义该函数时所指定的函数类型调用该函数时的主调用函数类型调用

6、函数时系统临时面向对象程序设计思想的主要特征不包括( B )继承性功能分解,逐步求精封装性和信息隐藏多态性面向对象程序设计中,( B )为程序的组成单元。 语句类主函数子函数在派生类中重新定义虚函数时,除了(D)方面,其他方面都必须与基类中相应的虚函数保持一致。参数个数参数类型函数名称函数体有关运算符重载正确的描述是:( D )。AC+语言允许在重载运算符时改变运算符的操作个数BC+语言允许在重载运算符时改变运算符的优先级CC+语言允许在重载运算符时改变运算符的结合性DC+语言允许在重载运算符时改变运算符的原来的功能若MyClass为一个类,执行“MyClass a3,*p4;”语句时会自动调

7、用该类构造函数的次数是( B )。A4B3C2D77对new运算符的下列描述中,( B )是错误的。A它可以动态创建对象和对象数组B用它创建对象数组时必须指定初始值C用它创建对象时要调用构造函数D用它创建的对象可以使用运算符delete来释放在类外不能访问类私有成员属于类的( A )特征。A封装B继承C多态D抽象namespace与class、struct、union和enum有着明显的区别,下面说法错误的是( C ) namespace只能在全局范围内定义,但它们之间可以互相嵌套在namespace定义的结尾,右花扩号的后面不必跟一个分号一个namespace可以在多个头文件中用一个标识符来

8、定义,就好像重复定义一个类一样namespace可以把全局名字空间当成一个小空间来管理在C+语言中,数据封装要解决的问题是( C ) 避免数据丢失数据的规范化防止不同模块之间数据的非法访问便于数据转换已知print()函数是一个类的常量成员函数,它无返回值,下列表示中( A)是正确的。 void print() constconst void print()void const print()void print(const)以下正确的函数原型为( D )func (int x ; int y);void (x , y);void (int x , y);void func (int , in

9、t);为了避免在嵌套的条件语句if-else中产生二义性,C+规定:else子句总是与( B )配对。缩排位置相同的if 和其之前最近if 和其之后最近if 同一行上的if对于一个功能不太复杂,并且要求加快执行速度,选用( A )合适。内联函数 重载函数递归调用 嵌套调用编译时的多态性可以通过使用( A )获得。虚函数和指针 重载函数和析构函数 虚函数和对象 虚函数和引用类O定义了公有函数F1。P和Q为O的派生类,定义为class P:protected O;class Q: public O。则可以访问F1的是( A )。A O、P、Q类的对象B P、Q类的对象C O、Q类的对象D O类的对

10、象A类定义如下,编译时有错误的行是( B )。class A int a; /1行public: A(int);/2行 A();/3行 A(int); /4行;A 1B 2C 3D 4有如下程序:private:char name80;int main()CD a,*b,d2;return 0;#includeusing namespace std;class CDpublic:CD()coutC;运行时的输出结果是()ACCCBCCCC CCCDC要实现动态联编,必须通过( A )调用虚函数。A对象指针B成员名限定C对象名D派生类名下面对于友元函数描述正确的是 ( C )。友元函数的实现必须

11、在类的内部定义 友元函数是类的成员函数友元函数破坏了类的封装性和隐藏性 友元函数不能访问类的私有成员设有如下定义int (*ptr)();,下面关于ptr正确叙述是( C )。ptr是指向一维数组的指针变量。ptr是指向int 型数据的指针变量。ptr是指向函数的指针,该函数返回一个int型数据。ptr是一个函数名,该函数的返回值是指向int型数据的指针。使用重载函数编程序的目的是( A )使用相同的函数名调用功能相似的函数共享程序代码提高程序的运行速度 节省存储空间在派生类中重新定义虚函数时,除了( )方面,其他方面都必须与基类中相应的虚函数保持一致。参数个数 参数类型 函数名称 函数体有如

12、下函数模板定义:template T func(T x, T y) return x*x+y*y; 在下列对func的调用中,错误的是(C)。Afunc(5, 11); Bfunc(3.6, 5.8);Cfunc(4, 9.4);Dfunc(b,c);构造函数是在( B )时被执行的程序编译创建对象创建类程序装入内存如果在基类中将show声明为不带返回值的纯虚函数,正确的写法是:( C )virtual show()=0;virtual void show();virtual void show()=0;void show()=0 virtual;下列函数模板定义中,不合法的是( C )tem

13、plate T1 foo(T1,T1)template TT foo(float *);inline template T foo(T,unsigned int *);Template Ctype foo(Ctype a, Ctype b);对象之间的联系纽带(D)。A方法B多态性C属性D消息15UML中逻辑视图的作用是()。A描述系统的功能需求,找出用例和执行者B描述如何实现系统内部的功能C描述系统代码构件组织和实现模块,及它们之间的依赖关系D描述系统的并发性,并处理这些线程间的通信和同步在下面有关析构函数特征的描述中,正确的是:( C )一个类中可以定义多个析构函数析构函数名与类名完全相同

14、析构函数不能指定返回类型析构函数可以有一个或多个参数使用派生类的主要原因是:( A )提高代码的可重用性提高程序的运行效率加强类的封装性实现数据的隐藏有关运算符重载正确的描述是:( D )C+语言允许在重载运算符时改变运算符的操作个数C+语言允许在重载运算符时改变运算符的优先级C+语言允许在重载运算符时改变运算符的结合性C+语言允许在重载运算符时改变运算符的原来的功能对于一个功能不太复杂,并且要求加快执行速度,选用( A )合适。A)内联函数B)重载函数C)递归调用D)嵌套调用5、运行时的多态性可以通过使用( C )获得。A) 虚基类 B) 重载函数C) 虚函数D) 引用基类模板的使用是为了:

15、( A )A) 提高代码的可重用性B) 提高代码的运行效率C) 加强类的封装性D) 实现多态性下列关于this指针的叙述中,错误的是( A)类的成员函数都有this指针this隐含于每个类的非静态成员函数中this指针是成员函数所属对象的指针this指针不能显式定义;模板的使用是为了:( )提高代码的可重用性提高代码的运行效率加强类的封装性实现多态性以下有关静态数据成员函数的叙述不正确的是( )静态成员函数属于整个类对静态成员函数的引用不允许使用对象名在静态成员函数中不能直接引用类的非静态成员使用类名可以直接调用其静态成员函数以下( )成员函数表示纯虚函数。A)virtual int vf(i

16、nt);B)void vf(int)=0;C)virtual void vf(int)D) virtual void vf()=0;在表达式 x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。则operator+有 个参数,operator*有 参数。( C )A) 1、2B)2、1C) 2、2D)1、1在下列函数原型中,可以作为类AA构造函数的是( D )。A)void AA(int); B)int AA(); C)AA(int)const; D)AA(int);可以用p.a的形式访问派生类对象p的基类成员a,其中a是( D )A)私有继承的公有成员B)公有继承的私

17、有成员C)公有继承的保护成员D)公有继承的公有成员48下列关于对象概念的描述中,(a)是错误的。 A. 对象就是C语言中的结构变量B. 对象代表着正在创建的系统中的一个实体 C. 对象是一个状态和操作(或方法)的封装体 D. 对象之间的信息传递是通过消息进行的下列有关类的说法不正确的是( C )。对象是类的一个实例任何一个对象只能属于一个具体的类一个类只能有一个对象类与对象的关系和数据类型与变量的关系相似程序设计题编写一个具有复制构造函数及传值构造函数,带字符数组指针的字符串类。(PPT)编写一个程序,设计一个产品类Product,其定义如下: Class Product char *name

18、; /产品名称int price; /产品单价int quantity; /剩余产品数量public: Product(char *n,int p,int q); /构造函数 Product(); /析构函数 void buy(int money); /购买产品 void get() const; /显示剩余产品数量;并用数据进行测试。(10分)以面向对象的方法设计一个类,此类包含3个私有数据:unlead,lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/公升,有铅汽油的价格是16元/公升),请以构造函数方式建立此值。试输入某天所加的汽油量,本程序将列出加油站

19、当天的总收入。编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。编一个程序计算正方体,球体和圆柱体的表面积和体积。要求:抽象出一个公共基类container为抽象类,在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数据成员radius,此数值可以作为球体的半径、正方体的边长、圆柱体底面圆半径。由该抽象类派生出的三个类,都有求表面积和体积的实际定义。键盘输入radius的值后,可以输出这3种立方体的面积。CFrcation为分数类。使用该类完成分数的加、乘运算。类定义如下:class CFraction int

20、 numerator;/分子 int denominator;/分母public: CFraction(int num=0, int deno=1) numerator=num;denominator=deno; CFraction operator+(const CFraction&); friend CFraction operator*(const CFraction&,const CFraction&); void disp();设计如下函数:运算符+重载函数,实现分数相加;运算符*重载函数,实现分数相乘;disp函数,以“numerator/denominator”形式显示CFrac

21、tion数据成员。设计如下类:CShape抽象类。CShape有2个纯虚函数virtual double area()和 virtual double volume(),没有数据成员。CShape公有派生矩形类CRectangle。CRectangle新增数据成员double width和length。给出了基类虚函数的实现,分别返回矩形面积和体积。并设计CRectangle类的构造和复制构造函数。设计主函数。在主函数中声明基类的指针,指向派生类的对象,调用虚函数显示派生类对象的面积和体积。编写一个程序计算“三角形、正方形、圆形”三种图形的面积,要求:a)抽象出一个基类base;b)在其中说明

22、一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。 编写一个雇员和雇主数据输入和显示的程序。雇员数据有编号(no)、姓名(name)和工资(salary),雇主数据有编号(no)、姓名(name)和职位(post)。要求将编号、姓名输入和显示设计成一个类person,并作为雇员数据类employee和雇主数据类employer的基类,并编写主程序进行执行,体现运行多态性,并给出执行结果。编写C+风格的程序,解决百钱问题:将一元人民币兑换成1、2、5分的硬币,有多少种换法?编写一个求字符串“we study new and delete”长度的程序。要求定义

23、类strtype,用new和delete这两个关键字分配和撤销字符串空间:创建字符串空间时,要有打印信息“Creating string”;撤销字符串空间时,要有打印信息“Deleting string”;定义函数show用于显示字符串的长度。显示执行结果。要求计算正方体、球和圆柱3个几何体的表面积和体积。可以抽象出一个公共的基类Base,把它作为抽象类,在该类内定义求表面积和体积德纯虚函数。在抽象类中可以定义一个数据成员length,它可作为球的半径、正方体的边长或圆柱体底面积的半径。请用C+语言定义上述类。读程序写结果程序运行后的输出结果是 #includeusing namespace

24、std;class complex int real; int imag;public:complex(int r=0,int i=0):real(r),imag(i) void show()coutreal(imag0 ? :+)imagiendl;complex& operator +=(complex &c) real+=c.real; imag+=c.imag; return c;complex& operator -=(complex &c) real-=c.real; imag-=c.imag; return c;friend complex& operator -(complex

25、 &);friend complex& operator +(complex &);complex& operator -(complex &c) c.real-; c.imag-; return c;complex& operator +(complex &c) c.real+; c.imag+; return c;void main() int i=10,j=3,m=2,n=-6; complex test1(i,j); test1.show(); test1-; complex test2(m,n); test2.show(); test2+; test1+=test2; test1.s

26、how(); test2-=test1; test2.show();程序运行后的输出结果是 #include #includeusing namespace std;class subtest string name; static int objectCount; public:subtest(const string& id = ) : name(id) +objectCount; print(subtest(); subtest() -objectCount; print(subtest();subtest(const subtest& h) : name() name += copy;+objectCount;print(subtest(const subtest&);void print(const string& msg = ) const if(msg.size() != 0)cout msg endl;cout t name : objectCount = objectCount endl;int subtest:objectCount = 0;subtest f(subtest x) x.print(x argument inside f();cout Returning from f() endl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论