第11章继承与派生(编辑修改稿)内容摘要:
~ Student( )。 Manager::Manager(const stringamp。 n, int d, int lvl) : family_name(n), // error: family_name not declared in manager department(d), // error: department not declared in manager level(lvl) { // ... } 派生类的构造函数只能描述它自己的成员和自己的直接基类的初始式,它不能直接去初始化基类的成员。 简单的派生类的构造函数 有子对象的派生类的构造函数 类的数据成员中可以包含类对象,如 : Student s1。 s1就是类对象中的内嵌对象,称为子对象,即对象中的对象。 例 包含子对象的派生类的构造函数。 include iostream include string using namespace std。 class Student {public: //公用部分 Student(int n, string nam ) //基类构造函数 {num=n。 name=nam。 } void display( ) {cout″num:″numendl″name:″nameendl。 } protected: //保护部分 int num。 string name。 }。 class Student1: public Student //声明公用派生类 Student1 {public: Student1(int n, string nam,int n1, string nam1,int a, string ad) :Student(n,nam),monitor(n1,nam1) //派生类构造函数 {age=a。 addr=ad。 } void show( )。 void show_monitor( )。 //成员函数,输出子对象 private: //派生类的私有数据 Student monitor。 //定义子对象 (班长 ) int age。 string addr。 }。 void Student1:: show( ) {cout″This student is:″endl。 display()。 //输出 num和 name cout″age: ″ageendl。 //输出 age cout″address: ″addrendlendl。 //输出 addr } void Student1::show_monitor( ) {coutendl″Class monitor is:″endl。 ( )。 //调用基类成员函数 } int main( ) {Student1 stud1(10010,″Wangli″,10001,″Lisun″,19,″115 Beijing Road,Shanghai″)。 ( )。 //输出学生的数据 ()。 //输出子对象的数据 return 0。 } 有子对象的派生类的构造函数 派生类构造函数的任务应该包括 3个部分 : ( 1) 对基类数据成员初始化; ( 2) 对子对象数据成员初始化; ( 3) 对派生类数据成员初始化。 有子对象的派生类的构造函数 执行派生类构造函数的顺序是 : ① 调用基类构造函数,对基类数据成员初始化; ② 调用子对象构造函数,对子对象数据成员初始化; ③ 再执行派生类构造函数本身,对派生类数据成员初始化。 多层派生时的构造函数 一个类不仅可以派生出一个派生类,派生类还可以继续派生,形成派生的层次结构。 例 多级派生情况下派生类的构造函数。 include iostream includestring using namespace std。 class Student {public: //公用部分 Student(int n, string nam ) //基类构造函数 {num=n。 name=nam。 } void display( ) //输出基类数据成员 {cout″num:″numendl。 cout″name:″nameendl。 } protected: //保护部分 int num。 //基类有两个数据成员 string name。 }。 class Student1: public Student {public: Student1(int n,char nam[10],int a):Student(n,nam) {age=a。 } void show( ) //输出 num, name和 age {display( )。 //输出 num和 name cout″age: ″ageendl。 } private: //派生类的私有数据 int age。 //增加一个数据成员 }。 class Student2:public Student1 {public: Student2(int n, string nam,int a,int s):Student1(n,nam,a) { score=s。 } void show_all( ) //输出全部数据成员 { show( )。 //输出 num和 name cout″score:″scoreendl。 //输出 age } private: int score。 //增加一个数据成员 }。 int main( ) {Student2 stud(10010,″Li″,17,89)。 ( )。 //输出学生的全部数据 return 0。 } 派生关系如图所示 派生类构造函数的特殊形式 1. 当不需要对派生类新增的成员进行任何初始化操作时,派生类构造函数的函数体可以为空。 2. 如果在基类中构造函数没有参数,那么在定义派生类构造函数时可不写基类构造函数。 3. 如果在基类和子对象类型的声明中都没有定义带参数的构造函数,而且也不需对派生类自己的数据成员初始化,则可以不必显式地定义派生类构造函数。 派生类构造函数的特殊形式 4. 如果在基类或子对象类型的声明中定义了带参数的构造函数,那么就必须显式地定义派生类构造函数,并在派生类构造函数中写出基类或子对象类型的构造函数及其参数表。 5. 如果在基类中既定义无参的构造函。第11章继承与派生(编辑修改稿)
相关推荐
议运行于TCP/IP通信协议之上,并且使用 Windows的 NetBEUI协议让 Unix计算机可以在网络邻居上被 Windows计算机看到。 它的功能有: • ( 1)共享 Linux磁盘给 Windows。 • ( 2)共享 Windows磁盘给 Linux。 • ( 3)共享 Linux打印机给 Windows。 • ( 4)共享 Windows打印机给 Linux。 冶金工业出版社
搜索称为模糊搜索 , 其搜索的关键字含有一些具有特殊含义的描述字符 , 称之为模式 (Pattern), 也称为正则表达式 (Regular Expression) , 或正规表达式。 这些具有特殊含义的描述字符称为元字符。 第 11讲 使用编辑器 第 14页 共 20页 模糊搜索 (续 ) 正则表达式常用的元字符: . 匹配任何一个字符 ( 回车换行符除外 ) *
的掌聲經久不息。 從此他開始了與丹尼爾 巴倫波伊姆、洛林 馬澤爾及詹姆士 列文的音樂會之旅。 引自: 2020/10/7 4 郎朗鋼琴風格 CNN亞洲熱播,稱 《 郎朗,這個星球上最受歡迎的鋼琴家 》 故郎朗已成為 全球成百上千音樂會的標誌性人物 其演奏風格: 高超技巧和充滿激情的表演風格,使他在他的每一場演出中都表現出了巨大的能量、技巧和激情
9C L K 1Q1Q2Q3M S 2M R 1M R 2C L K 0Q0M S 1D4UCCUCCC L K 1Q1Q2Q3M S 2M R 1M R 2C L K 0Q0M S 1D2C L K 1Q1Q2Q3M S 2M R 1M R 2C L K 0Q0M S 1D3C L K 1Q1Q2Q3M S 2M R 1M R 2C L K 0Q0M S 1D111C L K 1Q1Q2Q3M
液力减速器。 根 GB/T583793“ 液力耦合器型式与基本参数”国标规定,型号如下。 2020/10/7 24 液力耦合器的类型和结构 表 111 液力耦合器类型与代号 2020/10/7 25 液力耦合器的类型和结构 • 我国的液力耦合器已形成不同型号的几个系列 ,如 YOXD限矩型及 YOTC调速型。 图118为 YOXD型液力耦合器的功率图谱。 图 118
b=int(rnd*256) RGB(r, g, b) 2. QBColor(颜色码 ),颜色码使用 0~ 15之间的整数。 随机颜色: QBColor( Int(Rnd*16)) Visual Basic 程序设计 • 属性 •窗体或图形框的 DrawStyle 属性用于设置在其上面画线的样式,该属性提供 7种直线样式如下表所示: DrawStyle 属性值 描述 线段样式 属性