c 繼承(學習記錄三)

2021-10-19 08:16:57 字數 2641 閱讀 8403

class 派生類名 : public 基類名

/* 多重繼承宣告格式 */

class 派生類名: public1 基類名1, public2 基類名2,...

;

class cpoint

class ccircle

::
class base ;

class derived : public base ;

base b;

derived d;

//派生類的物件可以賦值給基類的物件 b = d;

//派生類的物件可以初始化基類引用 base & br = d;

//派生類物件的位址可以賦值給基類指標 base * pb = & d;

//如果派生方式為:pribate / protected,則以上不可行。

base * ptrbase = & objderived;
ptrbase指向的是乙個derived類的物件

*ptrbase可以看作乙個base類的物件,可以通過ptrbase訪問它的public成員。

">#includeusing namespace std;

class person

person(string c_name,int c_age,char c_***):name(c_name),age(c_age),***(c_***){}

person(const person &person)

void setname(string c_name)

string getname()

void setage(int c_age)

int getage()

void set***(char c_***)

char get***()

~person();

void print()

//友元函式

friend void show(person b);

};//class外宣告

person::~person()

void show(person b)

class student:public person

student(int c_studentid,string c_college)

:studentid(c_studentid),college(c_college){}

student(string c_name,int c_age,char c_***,int c_studentid,string c_college)

:studentid(c_studentid),college(c_college)

void setstudentid(int c_studentid)

int getstudentid()

void setcollege(string c_college)

string getcollege()

void print()

};class teacher:public person

teacher(int c_workid,string c_course)

:workid(c_workid),course(c_course){}

teacher(string c_name,int c_age,char c_***,int c_workid,string c_course)

:workid(c_workid),course(c_course)

void setworkid(int c_workid)

int getworkid()

void setcourse(string c_course)

string getcourse()

void print()

};class assistant:public student,public teacher

assistant(string c_name,int c_age,char c_***,int c_studentid,string c_college,string c_course)

void print()

};int main()

public:

throneinheritance(string kingname) : king(kingname)

void birth(string parentname, string childname)

void death(string name)

vectorgetinheritanceorder()

private:

void dfs(string name, vector& ans)

for (auto& child : relation[name])

}private:

string king;

unordered_map> relation;

unordered_setdeathflag;

}

參考

程式設計與演算法–郭煒

C 學習記錄 繼承

繼承是物件導向的三大特性之一。class 子類 繼承方式 父類 從父類繼承來的表現其共性,而新增的成員表現其個性。三種繼承方式 問題 從父類繼承來的成員,哪些屬於子類物件中?輸出子類的sizeof可以看出,父類中的所有非靜態成員都會被子類繼承下去,無論哪種繼承方式。構造 先base後son 析構 恰...

C 學習記錄 二 實現繼承

物件導向程式設計基於四個重要方面 封裝 抽象 繼承和多型。繼承是一種強大的屬性重用方式,是通向多型的跳板。這章中將學習 程式設計意義上的繼承 c 繼承語法 公有繼承 私有繼承和保護繼承 多繼承 隱藏基類方法和切除 slicing 導致的問題。在程式設計領域,經常會遇到具有類似屬性,但細節或行為存在細...

c 學習 oop 三種繼承

date 14 03 21 14 01 description 三種繼承 共有,私有,受保護繼承 class b public a class b private a class b private a 介面繼承 public和實現繼承 private private 修改繼承訪問 去除個別成員 預...