實驗4 繼承

2022-09-07 18:42:12 字數 2599 閱讀 2611

任務二

未加virtual

加virtual之後

同名覆蓋原則:基類中的函式和派生類的函式重名時,若未強行指名,則通過派生類物件使用的是派生類的同名成員

二元作用域分辨符:當派生類與基類中有相同成員時,如果要通過派生類物件訪問基類中被隱藏的同名成員,可以用基類名和作用域分辨符來限定

型別相容原則:在需要基類物件的任何地方,都可以使用公有派生類的物件來替代。

派生類的物件可以隱含轉換為基類物件

派生類的物件可以初始化基類的引用

派生類的指標可以隱含轉換為基類的指標

通過基類物件名、指標只能使用從基類繼承的成員。

任務三:

battery.hpp

1

#ifndef _battery_hpp_

2#define _battery_hpp_

3 #include4

class

battery

9int get_capacity() const

12};

1314

#endif

car.hpp

1

#ifndef _car_hpp_

2#define _car_hpp_

3 #include4 #include56

using

namespace

std;78

class

car ;

1718 car::car(string maker1, string model1, int

year1) :

19maker(maker1), model(model1), year(year1)

2223

void

car::info()

29void car::update_odometers(int

m) 36

37#endif

electriccar.hpp

1

#ifndef _electriccar_hpp_

2#define _electriccar_hpp_

3 #include4 #include"

battery.hpp

"5 #include"

car.hpp

"6 #include78

class electriccar : public car, public

battery ;

1516 electriccar::electriccar(string maker1, string model1, int year1, int

c) :

17car(maker1, model1, year1), battery(c) {}

1819

void

electriccar::info()

2324

#endif

task3,cpp

1 #include2 #include"

electriccar.hpp"3

intmain()

實驗結果截圖:

任務四:

pets.hpp

1

#ifndef _pets_hpp_

2#define _pets_hpp_

3 #include4 #include5

using

namespace

std;67

class

machinepets

12virtual

string

talk()

15string get_nickname() const

16};

1718

class petcats : public

machinepets

21string

talk()

24};

2526

class petdogs : public

machinepets

29string

talk()

32};

3334

#endif

task4.cpp

1 #include2 #include"

pets.hpp"3

4void play(machinepets *ptr) 78

intmain()

實驗結果截圖:

實驗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...

實驗4 繼承

task2.cpp原始碼 include include definitation of graph class graph definition of rectangle,derived from graph class rectangle public graph definition of c...