- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第讲__派生类与继承.ppt
* class CSub { public: int m_y; CSub(int i) { m_y = i; cout类CSub的构造函数\n; } ~CSub() { cout类CSub的析构函数\n; } }; 派生类子对象的类 * class CDerived: public CBase { int m_z; CSub s; public: CDerived(int i, int j, int k):CBase(j),s(k) { m_z = i; cout类CDerived的构造函数\n; } void show() { coutm_x=m_x m_y=s.m_y m_z=m_zendl; } ~CDerived() {cout类CDerived的析构函数\n;} }; 派生类 调用用基类和对象成员的构造函数,完成基类数据成员和对象成员的初始化 对象成员 * int main() { CDerived obj(1, 2, 3); obj.show(); return 0; } 程序的运行结果: 类CBase的构造函数 类CSub的构造函数 类CDerived的构造函数 m_x=2 m_y=3 m_z=1 类CDerived的析构函数 类CSub的析构函数 类CBase的析构函数 * 说明 (1)当派生类中含有若干个对象成员时,通常,其构造函数的定义形式如下: 派生类名(形参声明):基类名(参数表0),对象成员1(参数表1),……,对象成员n(参数表n) { 对派生类新增成员的初始化 } (2)如果派生类的基类又是另一个类的派生类(即该基类又有基类),那么,每个派生类通常只负责其直接基类的数据成员的初始化。 * 4. 多重继承 多重继承类 * 【例3-4】 多重继承 对例3-1的代码进行修改,增加研究生类。 * class CGraStudent: public CStudent { protected: char* m_strSupervisorName; //导师姓名 public: CGraStudent(char* strName = , char* strID = , char cSex = 0, int nYear = 0, int nMonth = 0, int nDay = 0, char* strMajor = , char* strSupervisorName = ); void SetSupervisorName(char* strSupervisorName); void GetSupervisorName(char* strSupervisorName) const; }; * CGraStudent::CGraStudent(char* strName, char* strID, char cSex, int nYear, int nMonth, int nDay, char* strMajor, char* strSupervisorName): CStudent(strName, strID, cSex, nYear, nMonth, nDay, strMajor) { m_strSupervisorName = new char[strlen(strSupervisorName)+1]; strcpy(m_strSupervisorName, strSupervisorName); } void CGraStudent::SetSupervisorName(char* strSupervisorName) { delete [ ] m_strSupervisorName; m_strSupervisorName = new char[strlen(strSupervisorName)+1]; strcpy(m_strSupervisorName, strSupervisorName); } void CGraStudent::GetSupervisorName(char* strSupervisorName) const { strcpy(strSupervisorName, m_strSupervisorName); } * unsigned long CStudent::m_nCount = 0; //静态数据成员的初始化 unsigned long CEmployee::m_nCount = 0; int main() { CGraStudent GraStudent1(王宾, 30201000601, 0, 1990, 12, 1, 电子信息工程, 樊明
文档评论(0)