Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7691980
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-08-18 20:50:45

 

一选择题

1.       _________是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。

    A)虚析构函数   B)虚构造函数    C)纯虚函数    D)静态成员函数

2.       关于纯虚函数和抽象类的描述中,错误的是_________

A)     纯虚函数是一种特殊的虚函数,它没有具体的实现

B)      抽象类是指具有纯虚函数的类

C)     一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

D)     抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

3.       实现运行时的多态性要使用_________

A)     重载函数

B)      构造函数

C)     析构函数

D)     虚函数

4.       如果一个类至少有一个纯虚函数,那么就称该类为________

A)     抽象类

B)      虚基类

C)     派生类

D)     以上都不是

5.       分析下面的程序,正确的输出结果是_________
#include 
#include 
class Base
{
public:
virtual char *fun() const=0;
};
char *Base::const{ return "Base";}
class Derived11:virtual public
Base
{
public:
char *fun()const{return "Derived11";}
};
class Derived12:virtual public Base
{
public:
char *fun() const{return "Derived12";}
};
c1ass Derived2:public Derived11,public Derived12
{
public:
char *fun() const 
{
char *ptr;
ptr=new char[strlen(Derived11::fun())+stlen(Derived12::fun())+1];
strcpy(ptr,Derived11::fun());
strcat(ptr,Derived12::fun());
return ptr;
}
};
void main()
{
Base *pb;
pb=new Derived11;
cout<fun()<pb=new Derived12;
cout<fun()<pb=new Derived2;
cout<fun()<}

A)
Base
Base
Base

B)
Derived11
Derived12
Derived11Derived12

C)
Derived11
Derived11
Derived11Derived12

D)
Derived12
Derived12
Derived11Derived12

6.       在下面程序中,ABCD四句编译时出现错误的是_________
Class A______ //A
{
public:______ //B
A(){func();}___ //C
virtual void func()=0;___//D
};

A)     class A

B)      public:

C)     A(){func();}

D)     virtual void func()=0;

7.       对虚函数的调用________

A)     可以说明虚函数

B)      可以进行构造函数重载

C)     可以定义友元函数

D)     不能说明其对象

 

二. 填充题:

1. 下列程序的运行结果如下:
Derive1's Print() called.
Derive2's Print() caIIed.
根据结果将程序补充完整。
#include 
class Base
{
public:
Base(int I){b=I;}
______
______
protected:
int b;
}
class Derive1:public Base
{
public:
______
______
void Print()
{
cout<<"Derive1's Print() called."< }
};
class Derive2:public Base
{
______
______
};
void fun(______
______)
{
obj->Print();
};
void main()
{
______
______
fun(d1);
fun(d2);
}

 

2. 根据不同的输出结果,在函数Tone中填入正确的语句。
#include 
class Instrument
{
public:
virtual void Print() const{cout<<"Instrument:Print"<};
class Piano:public Instument
{
public:
void Print() const{cout<<"Piano::Print<};
class Guitar :public InstruIment
{
pub1ic:
void Print() const{cout<<"Guiur::Print"<};
void Tone(___
___)
{
___
___
}
void main()
{
Guitar g;
Tone(g);
Piano p;
Tone(p);
}
(1)
输出结果为:
Instrument::Print
Instrument::Print
(2)
输出结果为:
Guitar::Print
Piano::Print

 

3. 下列程序的运行结果如下:
Base's cons.
Derived's cons.
Derived's des.
Base's des.
根据结果将程序补充完整。
#incude 
class Base
{
public:
Base(){cout<<"Base's cons."<___
___{cout<<"Base's des."};
class Derived:public Base
{
public:
Derived(){cout<<"Derived's cons."<~Derived(){cout<<"Derived's des."<};
void main()
{
Base *Ptr=___
___
delete ptr;
}

 

4. 抽象类不能______,但可以______作为参数类型,函数返回类型或显式转换类型。

 

三. 读程题:

1. 写出下列程序的运行结果。
#include 
class Base
{
public:
Base(int I=O):x(I){}
virtual int sum() const{return x;}
private:
1nt x;
};
class Derived :public Base
{
public:
Derived(int I=0,int j=O):Base(I),y(j){}
int sum() const{return Base::sum()+y;}
private:
int y;
};
void Call(Base b)
{
cout<<"sum="<}
void main()
{
Base b(10);
Derived d(10,40);
Call(b);
Call(d);
}

 

2. 写出下列程序的运行结果。
#include 
class BO
{
public:
virtual void display()=0;
};
class B1:public BO
{
public:
void display(){cout<<"Bl::display()”<};
class D1:public B1
{
public:
void display(){cout<<"D:: display()”<};
void fun(BO *ptr)
{
ptr->display();
}
void main()
{
BO *p;
B1 b1;
D1 d1;
p=&b1;
fun(p);
p=&d1;
fun(p);
}

 

3. 写出下列程序的运行结果。
#include 
class BO
{
public:
void display1(){cout<<"BO::display1()"<virtual void display2(){cout<<"BO::display2()"<};
class B1:public BO
{
public:
void display1(){cout<<"B1::display1()"<void display2(){cout<<"B1::display2()"<};
class D1:public B1
{
public:
void display1(){cout<<"D1::display1()"<void display2(){cout<<"D1::display2()"<};
void fun(B0 *ptr)
{
ptr->display1();
ptr->display2();
}
void main()
{
B0 b0,*p;
B1 b1;
D1 d1;
p=&Bo;
fun(p);
p=&b1;
fun(p);
p=&d1;
fun(p);
}

 

 

  

 

四.编程题:

1. 某人喜欢饲养宠物。假定他拥有的放置宠物的窝的数目是固定的。请设计一个程序,使得某人可以饲养任意种类任意数目的宠物。要求能够知道现在饲养了多少只宠物, 每只宠物所在的位置及其种类和姓名。*/ 

2. 设计一个小型公司的人员信息管理系统。该公司主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。要求存储这些人员的姓名、编号、级别、当月薪水总额并显示全部信息,具体要求如下所述。
___
___人员编号基数为1000,每输入一个人员信息,编号顺序加1
___
___程序具有对所有人员提升级别的功能。经理为4,兼职技术人员和销售经理为3,推销员为1级。
___
___月薪计算方法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销员的月薪按该推销员当月销售额的4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为5000,销售提成为所管辖部门当月销售额的5‰

 

3. 应用抽象类,求圆、圆内接正方形和圆外切正方形的面积和周长。

4. 编写一个程序实现图书和杂志销售管理。当输入一系列图书和杂志销售记录后,将销售良好(图书每月500本以上,杂志每月2500本以上)的图书和杂志名称显示出来。

  c++复习练习.rar   

阅读(3319) | 评论(0) | 转发(2) |
0

上一篇:C++测试题

下一篇:C++面向对象总结

给主人留下些什么吧!~~