實驗任務2
1 #include2 #include3執行結果:4class
graph58
};910class rectangle : public
graph
1114
};15
16class circle : public
graph
1720
};21
22void fun(graph *ptr)
2328
intmain()
29
同名覆蓋原則:派生類和基類具有相同成員時,通過派生類物件訪問,預設訪問的是派生類的同名成員
二元作用域分辨符(::):用於顯式指定使用的是哪個類的重名成員
型別相容原則:派生類物件也可以當作基類物件來使用,但只能使用從基類繼承的那部分功能
在graph類的成員函式draw()前加上virtual,重新編譯執行。結果為:
呼叫虛函式時,根據指標實際指向的物件,選擇相應的函式實現。
實驗任務3
使用類的組合和繼承模擬簡單的車輛資訊管理。
1#ifndef battery_hpp
2#define battery_hpp34
class
battery5{}
8//battery(battery& b):capacity(b.capacity){}
9int get_capacity()
10private:11
intcapacity;
12};
13#endif
1#ifndef car_hpp
2#define car_hpp
34 #include 5 #include 6
using
namespace
std;
7class
car8;20
21 car::car(string ma, string mo, int y, int
meters)
2228
29void
car::info()
3037
38void car::update_odometers(int
meters)
3946}47
#endif
1#ifndef electriccar_hpp
2#define electriccar_hpp
34 #include"
battery.hpp
"5 #include"
car.hpp"6
using
namespace
std;78
class electriccar : public
car9
12void
info();
13private:14
battery battery;
15};
1617
void
electriccar::info()
1826
#endif
1 #include 2 #include "測試結果:electriccar.hpp"3
4int
main()
5
實驗任務4
使用類的繼承,模擬簡單的機器寵物。
1#ifndef pets_hpp
2#define pets_hpp34
using
namespace
std;
5class
machinepets
6 {}
9string get_nickname() const
10virtual
string talk()
1112
private:13
string
nickname;
14};
1516
class petcats : public
machinepets
1720
string
talk()
2124
};25
26class petdogs : public
machinepets
2730
string
talk()
3134
};35
#endif
1 #include 2 #include "測試結果:pets.hpp"3
4void play(machinepets *ptr)58
9int
main()
10
總結與體會
1、加了{}就是定義了,而不是宣告
2、派生類建構函式初始化,通過引數化列表,先呼叫基類建構函式初始化基類,再初始化派生類成員
3、有預設值的形參才可以沒有實參
實驗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...