您的当前位置:首页C++面向对象考试题及答案

C++面向对象考试题及答案

2021-02-24 来源:爱问旅游网
C++测试题

一、 选择题(30分)

1.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是(B)

A. 增加了一些新的运算符 B. 引进了类和对象的概念

C. 语序函数重载,并允许设置缺省参数 D. 规定函数说明符必须用原型

2. 基类中的(D)不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏性,又提供了开放的接口

A.公有成员

B.私有成员

C.私有成员函数 D.保护成员 3.下列函数参数默认值定义错误的是(C) A.Fun(int x,int y = 0); B.Fun(int x = 100); C.Fun(int x=0;int y); D.Fun(int x=f());(假定函数f()已经定义)

4.下列对重载函数的描述中,哪一项是错误的(A) A.重载函数中,不允许使用默认参数 B.重载函数中编译是根据参数表进行选择 C.不要使用重载函数来描述毫不相干的函数 D.构造函数重载将会给初始化带来多种方式

5.通过函数来实现一种不太复杂的功能,并且要加快执行速度,选用下列哪一种函数(A) A.内联函数 B.重载函数 C.递归函数 D.嵌套函数 6.下面说法中正确的是(B)

A.一个类只能定义一个构造函数,但可以定义多个析构函数 B.一个类只能定义一个析构函数,但可以定义多个构造函数 C.构造函数与析构函数同名,只要名字前加一个求反符号(~)

D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以 7.对基类和派生类的关系描述中,哪一项是错误的(B) A.派生类是基类的具体化 B.派生类是基类的子集 C.派生类是基类定义的延续 D.派生类是基类的组合

8.下列虚基类的声明中,正确的是(D) A.class virtual B:public A B.virtual class B:public A C.class B:public virtual A D.class B:virtual public A 9.C++中运算符重载可以改变(C)

A.运算符的优先级 B.运算符的结合性

C.运算符的功能 D.运算符的操作数个数

10. 在C++中,要实现运行时的多态,必须使用(D)调用虚函数

A.类名 B.派生类指针 C.对象名 D.基类指针

二、填空题(30分) (1)任何一个对象都具有 _属性____和_行为____这两个要素。

(2)函数重载时要求同名函数的参数__类型___或_个数____不同,否则无法确定是哪个函数。 (3)在用class定义一个类时,数据成员和成员函数的默认访问权限是_私有的_____。 (4)如果一个类至少有一个纯虚函数,那么就称该类为_ 抽象类____

(5)使用__const___关键字说明的对象称为常对象,并且,在定义常对象时必须进行__初始化___。

(6)面向对象程序设计的3大机制为:__封装性____、_继承 性____、和__多态性___。

(7)C++类的组成包括数据成员和_ 成员函数____,友元___不是__(是、不是)该类的成员函数。 (8)若要把整型变量y定义为x的引用,则所使用的定义语句为_int &y=x ___。

(9)假定指针变量p定义为int *p=new int(10);要释放p所指向的动态内存,应该使用语句 delete p__ (10)假定x和y为整型,其值为16和5,则x/y和double(x)/y的值分别为_3___和__3.2__。 三、程序阅读(10分)

(1)执行以下程序段后,变量i的值为_13_____

int i=2; switch(i)

{ case 1:i +=10; case 2:i +=10; case 3:i++;break; default:i++; }

(2)下面程序的运行结果是_6 6_______

#include using namespace std; int func(int a) {int b=0;

static int c=4; b++; c--;

return(a+b+c); }

void main( ) {int a=2;

for(int j=0;j<2;j++) cout<(3)下面程序的运行结果是__X Y Z Z____

#include using namespace std; class A {int x; public: A(){cout<<\"X\"<< \" \";} A(int a){cout<<\"Y\"<< \" \";} ~A(){cout<<\"Z\"<< \" \";} };

int main()

{A a,*p; p=new A(2); delete p; return 0; }

四、程序设计(30分)

1. please define a class named Date ,which include three properties (year,month,day), also define:

(1)A constructor that initialize the data members.

(2)A member function showDate ( ) that show the information of data members. (3)Write the main function to test your classes just defined.

1. #include

using namespace std; class Date { private: int year; int month; int day; public: Date(int y=2016,int m=12,int d=16){ year = y; month = m; day = d; } void showDate(){ cout<<\"year:\"<int main() { Date d1; d1.showDate(); return 0; }

2. Write down the following classes and complete the correspondent functionalities

(1)Please design an abstract class named Vehicle(车), which declared a pure virtual function run( ). (2)Derive Motorcar(汽车) and Bicycle(自行车) classes from Vehicle. (3)The function of run( ) is to output the message like this:” Motorcar is running” or” Bicycle

is

running”.

(4)Assign object Motorcar or Bicycle to a pointer of type Vehicle named p, When we call member

function run( ) of the objects by pointer p, the output is the running information of Motorcar or Bicycle objects.

2. #include

using namespace std; class Vehicle { public: virtual void run() const = 0; };

class Motorcar:public Vehicle { public:

virtual void run() const {cout<<\"Motorcar is running.\"<class Bicycle:public Vehicle { public: virtual void run() const {cout<<\"Bicycyle is running.\"<int main() {

Vehicle *p; Motorcar m; Bicycle b; p = &m; p->run(); cout<run(); return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容