實驗4 繼承

2022-09-10 08:06:08 字數 2992 閱讀 8542

實驗任務2

1 #include2 #include3

4class

graph58

};910class rectangle : public

graph

1114

};15

16class circle : public

graph

1720

};21

22void fun(graph *ptr)

2328

intmain()

29

執行結果:

同名覆蓋原則:派生類和基類具有相同成員時,通過派生類物件訪問,預設訪問的是派生類的同名成員

二元作用域分辨符(::):用於顯式指定使用的是哪個類的重名成員

型別相容原則:派生類物件也可以當作基類物件來使用,但只能使用從基類繼承的那部分功能

在graph類的成員函式draw()前加上virtual,重新編譯執行。結果為:

呼叫虛函式時,根據指標實際指向的物件,選擇相應的函式實現。

實驗任務3

使用類的組合和繼承模擬簡單的車輛資訊管理。

1

#ifndef battery_hpp

2#define battery_hpp34

class

battery5{}

8//battery(battery& b):capacity(b.capacity){}

9int get_capacity()

10private:11

intcapacity;

12};

13#endif

1

#ifndef car_hpp

2#define car_hpp

34 #include 5 #include 6

using

namespace

std;

7class

car8;20

21 car::car(string ma, string mo, int y, int

meters)

2228

29void

car::info()

3037

38void car::update_odometers(int

meters)

3946}47

#endif

1

#ifndef electriccar_hpp

2#define electriccar_hpp

34 #include"

battery.hpp

"5 #include"

car.hpp"6

using

namespace

std;78

class electriccar : public

car9

12void

info();

13private:14

battery battery;

15};

1617

void

electriccar::info()

1826

#endif

1 #include 2 #include "

electriccar.hpp"3

4int

main()

5

測試結果:

實驗任務4

使用類的繼承,模擬簡單的機器寵物。

1

#ifndef pets_hpp

2#define pets_hpp34

using

namespace

std;

5class

machinepets

6 {}

9string get_nickname() const

10virtual

string talk()

1112

private:13

string

nickname;

14};

1516

class petcats : public

machinepets

1720

string

talk()

2124

};25

26class petdogs : public

machinepets

2730

string

talk()

3134

};35

#endif

1 #include 2 #include "

pets.hpp"3

4void play(machinepets *ptr)58

9int

main()

10

測試結果:

總結與體會

1、加了{}就是定義了,而不是宣告

2、派生類建構函式初始化,通過引數化列表,先呼叫基類建構函式初始化基類,再初始化派生類成員

3、有預設值的形參才可以沒有實參

實驗4 繼承

任務二 未加virtual 加virtual之後 同名覆蓋原則 基類中的函式和派生類的函式重名時,若未強行指名,則通過派生類物件使用的是派生類的同名成員 二元作用域分辨符 當派生類與基類中有相同成員時,如果要通過派生類物件訪問基類中被隱藏的同名成員,可以用基類名和作用域分辨符來限定 型別相容原則 在...

實驗4 繼承

task2 原 include include 歸納總結 同名覆蓋原則 當派生類的函式名或者成員名與基類的函式名或成員名發生重複 哪怕它們形參列表不同 將自動隱藏其父類的同名函式或物件,要使用其父類對應的函式或成員需要用父類作用域來進行說明。二元作用域分辨符 即 是雙目運算子,常用於 類名 成員,表...

實驗4 繼承

task2.cpp include include definitation of graph class graph definition of rectangle,derived from graph class rectangle public graph definition of circ...