實驗4 繼承

2022-09-10 08:21:10 字數 2964 閱讀 8667

四 實驗結論

2.實驗任務2

(1)同名覆蓋原則:派生類中的同名函式覆蓋掉基類中的同名函式,如果想呼叫基類的同名函式,必須用類作用域符::來進行區分。

(2)二元作用域分辨符:①在派生類內部訪問基類同名函式②在派生類外通過派生類訪問基類同名函式

(3)型別相容原則:派生類可相容基類

(4)微調後**截圖如下:

虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。

3.實驗任務3

battery.hpp

#ifndef battery_hpp

#define battery_hpp

class

battery

;battery::battery(

double capacity_1=70

):capacity(capacity_1)

;battery::~battery()

;double

battery::get_capacity()

;#endif

car.hpp

#ifndef car_hpp

#define car_hpp#include

#include

#include

using

namespace

std;

class

car;

car::car(

string maker_1,string model_1,int year_1,int odometers_1=0

):maker(maker_1),model(model_1),year(year_1),odometers(odometers_1)

;car::~car()

;void car::info() const

;int car::update_odometers(int

odometers_test)

;#endif

electriccar.hpp

#ifndef electriccar_hpp

#define electriccar_hpp#include

#include

#include

"car.hpp

"#include

"battery.hpp

"class electriccar:public car,public

battery

;electriccar::electriccar(

string maker_1,string model_1,int year_1,int odometers_1=0,double capacity_1=70

):car(maker_1,model_1,year_1,odometers_1),battery(capacity_1)

;electriccar::~electriccar()

;

void

electriccar::info()

#endif

task3.cpp

#include #include 

"electriccar.hpp

"int

main()

程式執行截圖

4.實驗任務4

pets.hpp

#ifndef pets_hpp

#define pets_hpp#include

#include

#include

using

namespace

std;

class

machinepets

;machinepets::machinepets(

const

string

s):nickname(s)

;machinepets::~machinepets()

;string machinepets::get_nickname() const

;string

machinepets::machinepets::talk()

;class petcats:public

machinepets

;petcats::petcats(

const

string

s):machinepets(s)

;petcats::~petcats()

;string

petcats::talk()

;class petdogs:public

machinepets

;petdogs::petdogs(

const

string

s):machinepets(s)

;petdogs::~petdogs()

;string

petdogs::talk()

;#endif

task4.cpp

#include #include 

"pets.hpp

"void play(machinepets *ptr)

intmain()

程式執行截圖

五.實驗總結

(1)在定義派生類函式時,呼叫基類函式,報錯基類函式未宣告,原因在於沒有申明定義的函式時類中的,也就是沒有加electriccar::

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