第六章
1.C++中所谓多态性是指()。
A. 不同的对象调用不同名称的函数
B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数
D. 一个对象调用不同名称的对象
2.有关多态性说法不正确的是()。
A. C++语言的多态性分为编译时的多态性和运行时的多态性
B. 编译时的多态性可通过函数重载实现
C. 运行时的多态性可通过函数重载实现
D. 实现运行时多态性的机制称为动态多态性
3.以下()是正确的纯虚函数定义。
A. virtual void tt()=0
B. void tt(int)=0
C. virtual void tt(int)
D. virtual void tt(int){}
4.C++类体系中,能被派生类继承的是()。
A.构造函数B.虚函数C.析构函数D.友元函数
5.以下关于抽象类的说法正确的是()。
A.至少有一个虚函数的类就称为抽象类
B. 抽象类可以被实例化
C. 抽象类至少有一个纯虚函数
D. 抽象类不能被继承
6.对于下面两个类的描述正确的为()。
A. Animal为抽象类,Brid也为抽象类
B. Animal为抽象类,所有的成员函数均为纯虚函数
C. Brid类不包含纯虚函数,因此不是抽象类
D. 若有基类指针Animal* p= new Fish(“goldenfish”); 执行语句p->sleep();
则调用Animal::sleep()
7.关于派生类,以下理解正确的为()。
A.派生类从基类继承全部数据成员和部分成员函数
B.派生类是对基类的扩展,可以新增数据成员与成员函数
C.派生类中只能使用基类的成员函数,不能对其进行重新定义
D.派生类可以使用基类的成员,基类也可以使用派生类成员
8.分析以下程序的执行结果。
#include
#include
using namespace std;
class Animal{
protected:
string name ;
public:
Animal(string n = "无名"):name(n){ }
virtual void shout()
{ cout<< name<< endl; }
};
class Cat: public Animal{
int year;
public:
Cat( ) :Animal("无名"), year(0){ }
Cat(string n, int y):Animal(n)
{ year = y>0 ? y:0; }
void shout();
};
void Cat::shout(){
string result = name;
result += ":miao miao miao";
cout<< result << endl;
}
class Dog: public Animal{
int shoutNum;
public:
Dog(string n, int y):Animal(n)
{ shoutNum = y>0 ? y:0; }
void shout();
};
void Dog::shout(){
string result = name;
for(int i = 0; i < shoutNum; i++)
result += ":汪";
cout<< result << endl;
}
int main(){
Animal a;
Cat c("Garfield",3);
Dog d( "阿福",2);
Animal* pA[3] ={&a, &c,&d};
for(int i=0; i<3; i++)
pA[i]->shout();
a = c;
a.shout();
a = d;
a.shout();
return 0;
}