广州大学2005-2006学年第1学期考试B卷
课程面向对象程序设计考试形式(开/闭卷,考试/查)
一、 填空题:(10分,每个空格1分)
1、一个类的每个成员函数中都默认有一个所属类的指针参数,其名字由系统规定为 this ,它是一个C++保留字。
2、类是一种用户定义的类型,它由两大成员组成,其中用 数据 成员来描述同类事物的属性,用 函数 成员来描述它们的行为。
3. 重载运算符函数的函数名由关键字__operator________引出。
4. 利用成员函数对二元运算符重载,其左操作数是__this指针______,右操作数是_成员函数参数______。
5.如果类student继承了类person,则类student称为___派生类_______,类person称为___基类______。
6.多态是指类中具有相似功能的不同函数使用同一名称来实现的现象,是通过__重载函数________和___虚函数________ 等技术来实现。
二.是非题(回答“Y”或“N”, 10anb分,每小题1分)
1、友员可以访问类的所有成员。( Y )
2、若F是A的友员,则A是Fhelmet怎么读的友员。( N )
3、友员函数没有this指针。( Y )
4、一个派生类保护继承一个基类时,基类中所有公有成员同时成为派生类的公有成员。( N )
5、一个派生类私有继承一个基类时,基类中所有保护成员同时成为派生类的私有成员。( Y )
6、重载一个虚函数时,要求函数名、返回类型、参数个数、参数类型和顺序完全相同。( Y )
7、构造函数可以是虚函数。( N )
8、析构函数可以是虚函数。( Y )
9、抽象类至少有一个纯虚函数。( Y )
10、类模板就是模板类。( N )
三.选择题 (20分,每小题2分)
1、关于类和对象不正确的说法是( C )。
(加拿大卡尔加里大学A)类是一种类型,它封装了数据和操作;
(B)对象是类的实例;
(C)一个类的对象只有一个;
(D)一个对象必属于某个类。
2.填空选择
#include<iostream.h>
class Ba
{
public:
void fun(){cout<<”Ba::fun”<<endl;}
};
class Derived:public Ba
{
void fun()
{
___B________ ; //显式调用基类的函数fun()
cout<<”Derived::fun”<<endl;
}
查询四级准考证号};
A.) fun() B) Ba::fun() C). Ba.fun() D) Ba->fun()
3.派生类的对象对它的基类成员中__C______是可以访问的。
A. 公有继承的保护成员 B. 公有继承的私有成员
C. 公有继承的公有成员 D. 私有继承的公有成员
4.下列虚基类的声明中,正确的是___D_____。
A. class virtual B: public A B. virtual class B: public A
C.class B: public A virtual D. class B: virtual public A
5.C++的类有两种,一种是类的实例化,另一种是通过__A____派生的类。
A) 继承 B) 复用 C) 封装 D) 引用
6.下列的描述中,错误的是___B______。
A) 一个派生类可以作为另一个派生类的基类;
B) 派生类只继承了基类的公有成员和保护成员;
C) 派生类的缺省继承方式是private ;
D) 派生类至少由一个基类。
7.下面的描述中,正确的是____C_____。
A) 虚函数是一个静态成员函数;
B) 虚函数是一个非成员函数;
C) 派生类的虚函数与基类中对于的虚函数具有相同的参数个数和类型;
D) 虚函数可以在函数说明时定义,也可以在函数实现时定义。
8.实现运行时的多态性要使用_____D_____.
A) 重载函数 B) 构造函数 C) 析构函数 D) 虚函数
9.在下面程序中,A、B、C、D四句编译时出错的是____C_____。
class ba // A)
sdhc
{
public: // B)
ba(){func();} // C)
virtual void func()=0; // D)
};
10.下面对模板的声明中,正确的是__船期英文C______。
A) template<T> B) template<class T1,T2>
C) template<class T1,class T2> B) template<class T1;class T2>
四.阅读程序,写出下列程序的运行结果 (40分,每小题5分)
1.写出程序的运行结果
#include <iostream.h>
enum BREED { GOLDEN, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };
class Mammal
{
public:
// constructors
Mammal():itsAge(2), itsWeight(5){}
~Mammal(){}
//accessors
int GetAge() const { return itsAge; }
void SetAge(int age) { itsAge = age; }
int GetWeight() const { return itsWeight; }
void SetWeight(int weight) { itsWeight = weight; }
//Other methods
void Speak()const { cout << "Mammal sound!\n"; }
void Sleep()const { cout << "shhh. I'm sleeping.\n"; }
protected:
int itsAge;
int itsWeight;
};
class Dog : public Mammal
{英语演讲主题
public:
// Constructors
Dog():itsBreed(GOLDEN){}
~Dog(){}
// Accessors
BREED GetBreed() const { return itsBreed; }
void SetBreed(BREED breed) { itsBreed = breed; }
// Other methodsbloomers
void WagTail() const { cout << "\n"; }
编程java培训班 void BegForFood() const { cout << "Begging \n"; }
private:
BREED itsBreed;
};
int main()
{
Dog fido;
fido.Speak();
fido.WagTail();
cout << "Fido is " << fido.GetAge() << " years old\n";
return 0;
}
程序的运行结果为:
Mammal sound!
Tail wagging …
Fido is 2 years old
健康管理师培训
2.写出程序运行结果
#include <iostream.h>
class B1
{
public:
int nv;
void fun(){cout<<"Member of B1."<<endl;}