分类: 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
{
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<
cout<
cout<
A)
Base
Base
Base
B)
Derived11
Derived12
Derived11Derived12
C)
Derived11
Derived11
Derived11Derived12
D)
Derived12
Derived12
Derived11Derived12
6. 在下面程序中,A、B、C、D四句编译时出现错误的是_________。
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."<
class Derived:public Base
{
public:
Derived(){cout<<"Derived's cons."<
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()"<
class B1:public BO
{
public:
void display1(){cout<<"B1::display1()"<
class D1:public B1
{
public:
void display1(){cout<<"D1::display1()"<
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本以上)的图书和杂志名称显示出来。