實驗4 繼承

2022-09-10 07:45:13 字數 3230 閱讀 1945

task2.cpp原始碼

#include #include 

//definitation of graph

class

graph

};//

definition of rectangle, derived from graph

class rectangle : public

graph

};//

definition of circle, derived from graph

class circle : public

graph

};//

definitaion of fun(): as a call inte***ce

void fun(graph *ptr)

//test

intmain()

源**對應實驗結果:

task2.cpp修改後原始碼

#include #include 

//definitation of graph

class

graph

};//

definition of rectangle, derived from graph

class rectangle : public

graph

};//

definition of circle, derived from graph

class circle : public

graph

};//

definitaion of fun(): as a call inte***ce

void fun(graph *ptr)

//test

intmain()

task2.cpp修改後的實驗結果截圖:

task2的歸納總結

同名覆蓋原則:覆蓋是指派生類重新實現(或者改寫)了基類的成員函式,其特徵如下:1.不同的作用域(分別位於派生類和基類中);2.函式名稱相同;3.引數列表完全相同;

4.基類函式必須是虛函式。滿足這四個條件之後,派生類的物件使用函式時會進行派生類中的**規則執行。

二元作用域分辨符:即不論是否派用類還是基類,同名函式前對應的類名是什麼,對應的**執行規則便是該類名內的規則。

型別相容原則:1.派生類的物件可以隱含轉換為基類物件;2.派生類的物件可以初始化基類的引用;3.派生類的指標可以隱含轉換為基類的指標

task3.cpp原始碼

#include #include 

"electriccar.hpp

"int

main()

task3.cpp修改後原始碼

#include #include 

"electriccar.hpp

"int

main()

battery.hpp原始碼

#includeusing

namespace

std;

class

battery

intget_capacity()

private

:

intcapacity;

};

car.hpp原始碼

#include#include

using

namespace

std;

class

car

virtual

void

info()

void update_odometers(float

n_odometers)

private

:

string

maker;

string

model;

intyear;

float

odometers;

};

electriccar.hpp原始碼

#include#include

"battery.hpp

"#include

"car.hpp

"using

namespace

std;

class electriccar:public

car

void

info()

private

: battery battery;

};

task3實驗結果截圖

task3修改後實驗結果截圖

task4.cpp原始碼

#include #include 

"pets.hpp

"void play(machinepets *ptr)

intmain()

pets.hpp原始碼

#include#include

using

namespace

std;

class

machinepets

virtual

string

talk()

string

get_nickname()

private

:

string

nickname;

};class petcats:public

machinepets

string

talk()

};class petdogs:public

machinepets

string

talk()

};

task4實驗結果截圖

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