一、名词解释
1、多态性 2、构造函数 3、继承性 4、友元
二、填空
1、类的三大基本特性__________、__________、__________。
2、c++语言的函数参数传递方式有__________。
3、含有虚函数的类称为__________,含有纯虚函数的类为__________,为克服重复继承的二义性,用__________声明的基类称为虚基类,用__________声明函数称为虚函数。
4、在含有对象成员的派生类中,构造函数的调用次序,基类的构造函数对象成员的构造函数,派生类的构造函数的调用次序?
5、派生类对基类继承控制访问有三种__________。
三、单项选择
1、那个不是c++的基本数据类型( )。
2、c++语言中有哪些存放在动态存储区。 ( )
3、下面对于指针的描述不正确的是( )。
a、指针是地址变量 b、指针不能用除0以外的常量赋值
c、两个指针变量的加减法无意义 d、指针指向不同基类型的变量长度不同
4、下面对于析构函数的描述中不正确的是( )。
a、析构函数是内置函数 b、析构函数与类名相同
c、析构函数不能有参数 d、析构函数在对象撤销时自动执行
5、下列指针用法中错误的是( )。
a、int i; int *ptr=&i; b、int i; int *ptr; i=*ptr;
c、int *ptr; ptr=0; d、int i=5; int *ptr; *ptr=i;
6、派生类的对象对它的基类成员中什么是可访问的( )。
a、公有继承的公有成员 b、公有继承的私有成员
c、公有继承的保护成员 d、私有继承的公有成员
四、简答
1、什么是多重继承的名字冲突?怎样解决多重继承的名字冲突?
2、说明c++系统保留字protected的用法。
3、什么是抽象类?抽象类有什么特点?
五、分析下列程序,写出结果
1、#include<iostream.h>
int g=1;
void disp( )
{
int i=1;
static int s=1;
cout<<"g="<<g<<"\n";
cout<<"i="<<i<<"\n";
cout<<"s="<<s<<"\s";
g=g+1;i=i+1;s=s+1;
}
int main()
{
while(g<s)
disp;
return 0;
}
2、#include<iostream.h>
class aaa{
int a,b;
public:
aaa(int i,int j)
{a=i,b=j;
cout<<"c\n";
}
~aaa(){cout<<"d\n";}
void print( )
{
void aaa::print( )
{cout<<a<<","<<b<<"\n";}
void main()
{
aaa *a1,*a2;
a1=new aaa(1,2)
a2=new aaa(5,6)
a1->print();
a2->print();
delete a1;
delete a2;
}
3、#include<iostream.h>
class b1{
public:
b1(int x)
{cout<<x<<"->a\n";}
~b1()
{cout<<"b\n";}
};
class b2{
public:
b2(int x)