一、名詞解釋
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)