實驗4 繼承

2022-09-10 07:39:09 字數 2743 閱讀 7956

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

int main()

執行截圖

微調**後的執行截圖

同名覆蓋原則:

派生類與基類中有相同成員時,若未強行指名,則通過派生類物件使用的是派生類的同名成員;

如果要通過派生類的物件訪問基類被覆蓋的同名成員,需要加 物件名.基類名::同名成員 來限定

二元作用域分辨符:

用法是:類名::成員

型別相容原則:

乙個公有派生類的物件在使用上可以被當作基類的物件,反之則禁止。

具體表現在:

1.派生類的物件可以被賦值給基類物件。

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

3.基類的物件指標也可以指向派生類。但是如果派生類的指標想要指向基類,則必須要將基類物件的位址強轉為派生類型別的。

battery.hpp

#ifndef _battery_hpp_

#define _battery_hpp_

class battery

{} int get_capacity()

private:

int capacity;

};#endif

car.hpp
#ifndef _car_hpp_

#define _car_hpp_

#include #include using namespace std;

class car

, model, year, odometers {}

void info();

void update_odometers(int x);

private:

string maker, model;

int year, odometers;

};void car::info()

void car::update_odometers(int x)

#endif

electriccar.hpp
#ifndef _electriccar_hpp_

#define _electriccar_hpp_

#include "car.hpp"

#include "battery.hpp"

#include class electriccar : public car

void info();

private:

battery battery;

};void electriccar::info()

#endif

task3.cpp
#include #include "electriccar.hpp"

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 c...