學生類別考試日期院系
一、填空(共15分,每空1分)
1、編譯時的多型性是通過函式過載、運算子過載、模板來實現。
2、物件導向的四個基本特性是抽象 、 多型 、 繼承和封裝 。
3、假定ab為乙個類,則執行「c a(2), &p=a, c[1], *b=c;」語句時呼叫該類建構函式的次數為 2 。
4、c++類成員訪問屬性 public 、 private 、 protected 三種型別。
5、非成員函式應宣告為類的__友元___函式才能訪問這個類的private成員。
6、要實現動態聯編,必須通過基類指標或引用來呼叫虛函式實現。
7、在用class定義乙個類時,資料成員和成員函式的預設訪問許可權是_ 私有___。
8等四種運算子中,不可過載的運算子是 :: ,可採用友元函式過載的運算子是 + 。
9、成員函式中有純虛函式的類不能用來例項化物件。
二、問答題(共35分,每小題5分)
1.闡述為何在類的派生中要引入虛基類?
答案:當派生類從多個基類派生,而這些基類又從同乙個基類派生,則在訪問此共同基類中的成員時,將產生二義性。而且在派生類中會保留這個間接共同基類資料成員的多個同名成員。為了消除訪問的二義性,同時減少成員冗餘,c++中引入虛基類來解決。
2.簡述帶虛基類和非虛基類的多繼承派生類構造函式呼叫順序。
答案:多繼承基類建構函式初始化按虛基類優先,非虛基類,子物件,派生類自身建構函式順序呼叫進行初始化,同類按出現先後順序呼叫。只執行最後的派生類呼叫虛基類的建構函式,忽略虛基類其他派生類呼叫虛基類建構函式。
具體順序如下:
(1)按繼承虛基類的順序呼叫虛基類的建構函式;
(2)按繼承非虛基類的順序呼叫非虛基類的建構函式;
(3)按宣告成員物件的順序呼叫其建構函式;
(4)呼叫派生類自己的建構函式。
3.寫出下面程式的執行結果
4 外部物件g_glb_obj[構造]
5 外部靜態物件g_sta_obj[構造]
6 main內動態分配物件m_all_obj[構造]
7 main內呼叫fun函式
1 fun內: cal1
2 fun內靜態物件fun_sta_obj[構造]
3 fun內自動物件fun_obj[構造]
3 fun內自動物件fun_obj[析構]
1 fun內: cal2
3 fun內自動物件fun_obj[構造]
3 fun內自動物件fun_obj[析構]
6 main內動態分配物件m_all_obj[析構]
2 fun內靜態物件fun_sta_obj[析構]
5 外部靜態物件g_sta_obj[析構]
4 外部物件g_glb_obj[析構]
4.寫出下面程式的輸出結果
a::p1 a = 2
a::p2 a = 2 , b = 1.9
b::p1 a = 2
a::p2 a = 2 , b = 1.9
5.寫出下面程式的輸出結果
答案:3-呼叫base1類建構函式
4-呼叫base2類建構函式
6-呼叫base4類建構函式
5-呼叫base3類建構函式
1-呼叫obj1類建構函式
2-呼叫obj2類建構函式
3-呼叫base1類建構函式
3-呼叫base1類建構函式
4-呼叫base2類建構函式
7-呼叫派生類建構函式成功
8-end
#include
#include
using namespace std;
class obj1
#include <>
#include <>
void ** fspace_2d(int row,int col,int lenth)
}; ③ a a;
④ a(i, j) = i + j; // 矩陣元素賦值
cout << ⑤ a(i, j) 《輸出i行j列的元素值
2. 完成下面類中成員函式的定義,實現增量運算子過載。
include <>
public :
counter( )
friend counteroperator ++(counter &a); //前置增量運算子函式。
counteroperator ++(counter &a )
3. 完成下面類中成員函式的定義。
class str
set(a); } str(char *a)
str & operatorstr &a
void set初始化st char *s
st=new char[strlen(s)+1];
strcpy(st,s); } // 字串拷貝};
08單元2物件導向程序設計 程式設計題資訊
按以下要求編寫程式 1 建立乙個rectangle類,新增width和height兩個成員變數 2 在rectangle中新增兩種方法分別計算矩形的周長和面積 3 程式設計利用rectangle輸出乙個矩形的周長和面積 public class rectangle public float getl...
物件導向程序設計期中考試作業
1.定義乙個表示學生資訊的類student,要求如下 1 類student的成員變數 sno 表示學號 sname表示姓名 s 表示性別 sage表示年齡 sj a 表示j a課程成績。2 類student帶引數的構造方法 在構造方法中通過形參完成對成員變數的賦值操作。3 類student的方法成員...
河北工業大學物件導向程序設計實驗二類與物件
實驗二類與物件 一 實驗目的 1 學習類與物件的定義,掌握類與物件的使用方法。2 學習資料成員與成員函式的訪問方式,理解建構函式和析構函式的定義與執行過程,學會建構函式的過載方法。3 掌握陣列與指標的定義與使用方法,理解陣列與指標的儲存分配與表示。4 掌握用指標和引用向函式傳遞引數。5 掌握靜態資料...