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 修改繼承訪問 去除個別成員 預...