C++面向对象程序设计复习练习试题带答案2.docx

上传人:b****1 文档编号:17645397 上传时间:2023-04-24 格式:DOCX 页数:22 大小:22.12KB
下载 相关 举报
C++面向对象程序设计复习练习试题带答案2.docx_第1页
第1页 / 共22页
C++面向对象程序设计复习练习试题带答案2.docx_第2页
第2页 / 共22页
C++面向对象程序设计复习练习试题带答案2.docx_第3页
第3页 / 共22页
C++面向对象程序设计复习练习试题带答案2.docx_第4页
第4页 / 共22页
C++面向对象程序设计复习练习试题带答案2.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C++面向对象程序设计复习练习试题带答案2.docx

《C++面向对象程序设计复习练习试题带答案2.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计复习练习试题带答案2.docx(22页珍藏版)》请在冰豆网上搜索。

C++面向对象程序设计复习练习试题带答案2.docx

C++面向对象程序设计复习练习试题带答案2

C++面向对象程序设计模拟试题四

一、单项选择题(本大题共10小题,每小题2分,共20分)

1.下列关于C++函数的说明中,正确的是()。

A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句

C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型

D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式

2.假定MyCIass为一个类,那么下列的函数说明中,()为该类的无参构造函数。

A)voidMyClass();B)~MyClass(intn);C)MyClass();D)~MyClass();

3.下列叙述中,错误的是()。

A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的

C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合

4.当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中()。

A.都是虚函数B.只有被重新说明为vittual时才是虚函数C.都不是虚函数D.上面都不正确

5.派生类的构造函数的成员初始化表中,不能包含()。

A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化

6.下列是重载加法运算符的函数原型声明,其中错误的是()。

A)MyClassoperator+(double,double);B)MyClassoperator+(double,MyClass);

C)MyClassoperator+(MyClass,double);D)MyClassoperator+(MyClass,MyClass);

7.派生类中的成员不能直接访问基类中的()成员。

A)publicB)privateC)virtualD)protected

8.实现运行时的多态性要使用()。

A)重载函数B)析构函数C)构造函数D)虚函数

9.如果在类MyClass的外面使用函数调用MyClass:

:

f();则函数f()是类MyClass的()。

A.静态成员函数B.非静态成员函数C.友元函数D.前面都不正确

10.由于常对象不能被更新,因此()。

A)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数

C)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数

二、填空题(本大题共5小题,每小题2分,共10分

1.对于派生类的构造函数,在定义对象时构造函数的执行顺序为:

先执行调用___________的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。

2.声明类模板应使用关键字()。

3.重载的关系运算符和逻辑运算符的返回类型应当是()。

4.在面向对象方法中,类的实例称为()。

5.在类的对象被释放时,()函数会被自动调用。

三、完成程序填题(本大题共3个小题,每小题3分,共9分)

1.请完成下面的程序

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//测试静态成员类

classTest

{private:

inta;//数据成员

public:

Test(intx=0):

[1]{}//构造函数

voidShow(){cout<<"a:

"<

};

intmain(void)//主函数main(void)

{Testobj(168);//定义对象

obj.Show();//显示数据成员之值

return0;//返回值0,返回操作系统

}

2.请完成下面的程序

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//整数类

classInteger

{private:

inta;//数据成员

public:

Integer(intx=0){a=x;}//构造函数

[2](){returna;}//类型转换函数(将类类型转换为整型)

};

intmain(void)//主函数main(void)

{Integera=6;//定义整数对象

cout<

return0;//返回值0,返回操作系统

}

3.请完成下面的程序

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

/复数类

classComplex

{private:

doublerealPart;//实部

doubleimagePart;//虚部

public:

Complex(doublereal=0,doubleimage=0):

realPart(real),imagePart(image){}//构造函数

doubleGetRealPart()const{returnrealPart;}//返回实部

doubleGetImagePart()const{returnimagePart;}//返回虚部

Complexoperator+(constComplex&a)const//重载加法运算符+

{returnComplex([3]);//返回和

}};

intmain(void)//主函数main(void)

{Complexa(1,2),b(2,6),c;//定义复数对象

c=a+b;//复数加法运算

cout<<"a="<

cout<<"b="<

cout<<"c="<

return0;//返回值0,返回操作系统

}

四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。

1.阅读下面程序,写出输出结果。

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classA

{public:

virtualvoidShow()const

{cout<<"ClassA"<

};

classB:

publicA

{public:

voidShow()const

{cout<<"ClassB"<

};

voidShow(constA&obj)

{obj.Show();}

intmain(void)

{Aa;Bb;

Show(a);Show(b);

A*p;

p=&a;p->Show();

p=&b;p->Show();

B*q;

q=&b;q->Show();

return0;//返回值0,返回操作系统

}上面程序的输出结果为:

 

2.阅读下面程序,写出输出结果。

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

template

voidShow(ElemTypea[],intn)

{for(inti=0;i

{cout<

}

intmain(void)

{inta[]={1,6,9};

Show(a,sizeof(a)/sizeof(int));

Show(a,2);

cout<

return0;//返回值0,返回操作系统

}上面程序的输出结果为:

 

3.阅读下面程序,写出输出结果。

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classMyClass

{public:

MyClass(){count++;}

~MyClass(){count--;}

staticintGetCount(){returncount;}

private:

staticintcount;

};

intMyClass:

:

count=0;//初始化静态数据成员

intmain(void)

{MyClassobj1;

cout<

:

GetCount()<

MyClassobj2;

cout<

:

GetCount()<

MyClassobj3;

cout<

MyClass*p=newMyClass;

cout<

:

GetCount()<

deletep;

cout<

:

GetCount()<

return0;//返回值0,返回操作系统

}上面程序的输出结果为:

 

4.阅读下面程序,写出输出结果。

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classA

{public:

A(){cout<<"A()"<

~A(){cout<<"~A()"<

virtualvoidf(){cout<<"A:

:

f()"<

};

classB:

publicA

{public:

B(){cout<<"B()"<

~B(){cout<<"~B()"<

voidf(){cout<<"B:

:

f()"<

};

intmain(void)

{Bobj;

A*p=&obj;

p->f();

return0;//返回值0,返回操作系统

}上面程序的输出结果为:

 

六、编程题(本大题26分)

编写程序,定义抽象基类Shape(形状),由它派生出3个派生类:

Circle(圆形)、Rectangle(矩形)和Square(正方形),用函数函数ShowArea()分别显示各种图形的面积,最后还要显示所有图形的总面积。

C++面向对象程序设计模拟试题四参考答案

一、单项选择题1.C2.C3.C4.A5.C6.A7.B8.D9.A10.A

二、填空题1.参考答案:

基类2.参考答案:

template3.参考答案:

bool或布尔型4.参考答案:

对象5.参考答案:

析构函数

三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整,

1.参考答案:

[1]a(x)2.参考答案:

[2]operatorint

3.参考答案:

[3]realPart+a.realPart,imagePart+a.imagePart或this->realPart+a.realPart,this->imagePart+a.imagePart

四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。

1.参考答案:

ClassA

ClassB

ClassA

ClassB

ClassB

2.参考答案:

16916

3.参考答案:

1

2

3

4

3

4.参考答案:

A()

B()

B:

:

f()

~B()

~A()

六、编程题(本大题26分)

参考程序:

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

constdoublePI=3.1415926;//定义常量PI

classShape

{public:

Shape(){}//构造函数

virtual~Shape(){}//析构函数

virtualShowArea()=0;//显示面积

staticdoubletotalArea;//总面积

staticvoidShowTotalArea(){cout<<"总面积:

"<

};

classCircle:

publicShape

{private:

doubleradius;//半径

public:

Circle(doubler):

radius(r){totalArea+=PI*r*r;}//构造函数

~Circle(){}//析构函数

virtualShowArea(){cout<<"圆面积:

"<

};

classRectangle:

publicShape

{private:

doublelength;//长

doublewidth;//宽

public:

Rectangle(doublel,doublew):

length(l),width(w){totalArea+=l*w;}//构造函数

~Rectangle(){}//析构函数

virtualShowArea(){cout<<"矩形面积:

"<

};

classSquare:

publicShape

{private:

doublelength;//边长

public:

Square(doublel):

length(l){totalArea+=l*l;}//构造函数

~Square(){}//析构函数

virtualShowArea(){cout<<"正方形面积:

"<

};

doubleShape:

:

totalArea=0;//初始化totalArea

intmain(void)

{Circlec

(1);//定义圆对象

c.ShowArea();//显示面积

Rectangler(1,2);//定义矩形对象

r.ShowArea();//显示面积

Squarez(3);//定义正方形对象

z.ShowArea();//显示面积

Shape:

:

ShowTotalArea();//显示总面积

return0;//返回值0,返回操作系统

}

C++面向对象程序设计模拟试题三

一、单项选择题(本大题共10小题,每小题2分,共20分)

1.下面有关重载函数的描述中,正确的是()。

A)重载函数必须具有不同的返回值类型B)重载函数形参个数必须不同

C)重载函数必须具有不同的形参表D)重载函数名可以不同

2.假定MyCIass为一个类,那么下列的函数说明中,()为该类的析构函数。

A)void~MyClass();B)~MyClass(intn);C)MyClass();D)~MyClass();

3.()是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。

A)模板B)类C)对象D)函数

4.下面关于静态成员函数的途术中错语的是()。

A.静态成员函数可以有返回值B.this指针可以指向静态成员函数

C.静态成员函数可以具有指针参数D.静态成员函数可有具有返回值类型

5.定义类模板时要使用关键字()。

A.privateB.publicC.deleteD.template

6.下列是重载乘法运算符的函数原型声明,其中错误的是()。

A)MyClassoperator*(double,double);B)MyClassoperator*(double,MyClass);

C)MyClassoperator*(MyClass,double);D)MyClassoperator*(MyClass,MyClass);

7.以下()成员函数表示纯虚函数。

A)virtualintfun(int)B)voidfun(int)=0C)virtualvoidfun()=0D)virtualvoidfun(int){}

8.关于纯虚函数,下列表述中正确的是()。

A)纯虚函数的声明总是以"=0"结束B)含有纯虚函数的类可以定义对象

C)含有纯虚函数的类是抽象类D)上面都是错误的

9.()解决二义性问题。

A.只能使用作用域分辨操作符B.只能使用虚基类

C.使用作用域分辨操作符或虚基类D.上面都不能

10.实现编译时的多态性要使用()。

A)重载函数B)析构函数C)构造函数D)虚函数

二、填空题(本大题共5小题,每小题2分,共10分)

1.定义一个函数名为fun,返回值为int,没有参数的纯虚函数的声明是()。

2.定义静态成员函数应使用关键字()。

3.在C++中,如果类的名称是CTest,则此类的构造函数名称为()。

4.在类的对象被创建时,()函数会被自动调用。

5.类中数据成员和成员函数的默认访问级别为()。

三、完成程序填题(本大题共3个小题,每小题3分,共9分)

1.请完成下面的程序

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//测试静态成员类

classTest

{

private:

[1]Testintcount;//对象数

public:

Test(){count++;}//构造函数,实现对对象进行计数

staticvoidShow(){cout<<"共有"<

"<

};

intTest:

:

count=0;//初始化静态数据成员赋初值

intmain(void)//主函数main(void)

{Testobj1,obj2,obj3;//定义对象

Test:

:

Show();//显示对象数

return0;//返回值0,返回操作系统

}

2.请完成下面的程序

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//整数类

classInteger

{private:

inta;//数据成员

public:

Integer(intx=0){a=x;}//构造函数

operatorint(){returna;}//类型转换函数

Integeroperator+(constInteger&i)const//重载加法运算符+

{return[c2];//返回和

}

};

intmain(void)//主函数main(void)

{Integera

(2),b(3),c;//定义整数对象

c=a+b;//求和

cout<

return0;//返回值0,返回操作系统

}3.请完成下面的程序

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

template

classA

{private:

ElemTypea;//数据成员

public:

A(ElemTypex):

a(x){}//构造函数

voidShow()const

{cout<

};

intmain(void)//主函数main(void)

{A<[3]>obj("Hello,world!

");//定义对象

obj.Show();//显示相关信息

return0;//返回值0,返回操作系统

}

四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。

1.阅读下面程序,写出输出结果。

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classPoint

{private:

intx;//x坐标

inty;

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

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1