第六章 實驗

2021-08-20 15:18:23 字數 3565 閱讀 9428

實驗目的和要求

了解靜態聯編的動態聯編的概念。掌握動態聯編的條件。

實驗內容

「1.分析並除錯下列程式。

#include

using

namespace

std;

class base

"

(1)找出以上程式中使用了過載和覆蓋函式。

(2)寫出程式的輸出結果,並解釋輸出結果。

程式的輸出結果如下:

分析:

在程式中pb是基類指標,pd是派生類指標,pd的所有函式呼叫都只是呼叫自己的函式

分析並除錯下列程式

分析並除錯下列程式

程式如下:

#include

using namespace std;

class point

double area()

private:

double x,y;

};

class rectangle:public point

double area()

private:

double w,h;

};

int main()

寫出程式的輸出結果,並解釋輸出結果

執行結果如下:

分析並除錯下列程式

程式如下:

#include

using namespace std;

const

double pi=3.1415;

class shap

;

class ********:public shap

double area()

private:

double h,w;

};

class rectangle:public shap

double area()

private:

double h,w;

};

class circle:public shap

double area()

private:

double r;

};

class square:public shap

double area()

private:

double s;

};

double total(shap *s,int n)

int main()

執行結果如下:

1)指出抽象類。

(2)指出純虛函式,並說明它的作用。

(3)每個類的作用是什麼?整個程式的作用是什麼?

某學校對教師每個月工資的計算規定如下:固定工資+課時補貼;教授的固定工資為5000元,每個課時補貼50;副教授的固定工資為3000,每個課時補貼30元;講師的固定工資為2000元,每個課時補貼20元。定義教師抽象類,派生不同職稱的教師類,編寫程式求若干個教師的月工資。(sy6_5.cpp)

#include 

using

namespace

std;

class teacher

;

class professor:public teacher

;

int salary()

;

void print(int money)

;

int salary()

;

void print(int money)

;

int salary()

;

void print(int money)

執行程式如下:

6.把實驗5中的第4題的shape類定義為抽象類,提供共同操作介面的純虛函式。twodimshape類和threedimshape類仍然抽象類,第3層具體類才能提供全部函式的實現。在測試函式中,使用基類指標實現不同派生類物件的操作。

分析與討論

1.結合實驗內容中第1題和第2題,說明過載與覆蓋的區別。

答:過載與覆蓋的區別:1、方法的覆蓋是子類和父類之間的關係,是垂直關係;方法的過載是同乙個類中方法之間的關係,是水平關係2、覆蓋只能由乙個方法,或只能由一對方法產生關係;方法的過載是多個方法之間的關係。3、覆蓋要求引數列表相同;過載要求引數列表不同。4、覆蓋關係中,呼叫那個方法體,是根據物件的型別(物件對應儲存空間型別)來決定;過載關係,是根據呼叫時的實參表與形參表來選擇方法體的。

2.總結靜態聯編和動態聯編的區別和動態聯編的條件。

答:靜態聯編是指聯編工作在編譯階段完成的,這種聯編過程是在程式執行之前完成的,又稱為早期聯編。要實現靜態聯編,在編譯階段就必須確定程式中的操作呼叫(如函式呼叫)與執行該操作**間的關係,確定這種關係稱為束定,在編譯時的束定稱為靜態束定。靜態聯編對函式的選擇是基於指向物件的指標或者引用的型別。其優點是效率高,但靈活性差。

動態聯編是指聯編在程式執行時動態地進行,根據當時的情況來確定呼叫哪個同名函式,實際上是在執行時虛函式的實現。這種聯編又稱為晚期聯編,或動態束定。動態聯編對成員函式的選擇是基於物件的型別,針對不同的物件型別將做出不同的編譯結果。c++中一般情況下的聯編是靜態聯編,但是當涉及到多型性和虛函式時應該使用動態聯編。動態聯編的優點是靈活性強,但效率低。 動態聯編的條件:

①必須把動態聯編的行為定義為類的虛函式。

②類之間應滿足子型別關係,通常表現為乙個類從另乙個類公有派生而來。

③必須先使用基類指標指向子型別的物件,然後直接或者間接使用基類指標呼叫虛函式。

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...

第六章實驗任務(2)

題目 將下面的程式編譯連線,用debug載入 跟蹤,然後回答問題。源 除錯過程 問題1 cpu執行程式,程式返回前,data斷的資料為多少?解答 data段的資料是 144c 0000 23 01 56 04 00 00 00 00 00 00 00 00 00 00 00 00,結果保持變。問題2...

第六章 指標

1.多位元組資料的位址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,位址也要遵從邊界對齊 2.高階語言的乙個特性就是通過名字而不是位址來訪問記憶體的位置,但是硬體仍然通過位址訪問記憶體位置 3.記憶體中的變數都是義序列的0或1的位,他們可以被解釋為整數或者其他,這取決...