實驗4 繼承

2022-09-10 08:57:09 字數 2926 閱讀 8947

tsak2.cpp檔案原始碼

#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

int main()

原測試截圖:

修改後測試截圖:

歸納總結:

(1)公有派生類的物件可以用來在需要基類的物件的地方替代使用,但替代之後只能使用從基類繼承的成員。

(2)對於同名的成員,訪問派生類或基類的同名成員時,需加作用域符,即 物件名.類名::成員名,否則以 物件名.成員名 的形式訪問的是派生類的同名成員。

(3)在多重繼承下,為了訪問基類或派生類中同名成員,需要定義虛基類。

car.hpp源**

#ifndef car_hpp

#define car_hpp

#include using namespace std;

class car

void info()

void update_odometers(int odometers0)

else

odometers = odometers0;

}private:

string maker;

string model;

int year;

int odometers;

};#endif

electriccar.hpp源**

#ifndef electriccar_hpp

#define electriccar_hpp

#include "car.hpp"

#include "battery.hpp"

#include using namespace std;

class electriccar :public car

void info()

private:

battery battery;

};#endif

battery.hpp源**

#ifndef battery_hpp

#define battery_hpp

#include using namespace std;

class battery ;//預設建構函式

battery(int capacity0) :capacity(capacity0) {}

int get_capacity()

private:

int capacity;

};#endif

task3.cpp源**

#include #include "electriccar.hpp"

int main()

測試截圖:

pets.hpp源**

#ifndef pets_hpp

#define pets_hpp

#includeusing namespace std;

class machinepets

virtual string talk()

string get_nickname() const

private:

string nickname;

};class petcats :public machinepets

string talk()

};class petdogs :public machinepets

string talk()

};#endif

task4.cpp源**

#include #include "pets.hpp"

void play(machinepets* ptr)

int main()

測試截圖:

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