面向對象程式設計C++複習資料(一)

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