资源预览内容
第1页 / 共83页
第2页 / 共83页
第3页 / 共83页
第4页 / 共83页
第5页 / 共83页
第6页 / 共83页
第7页 / 共83页
第8页 / 共83页
第9页 / 共83页
第10页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C+面向对象程序设计面向对象程序设计第四章内容第四章内容p4.1 什么是运算符重载什么是运算符重载p4.2 运算符重载的方法运算符重载的方法p4.3 重载运算符的规则重载运算符的规则p4.4 运算符重载作为类成员函数和友元函数运算符重载作为类成员函数和友元函数p4.5 重载双目运算符重载双目运算符p4.6 重载单目运算符重载单目运算符p4.7 重载流插入运算符和流提取运算符重载流插入运算符和流提取运算符p4.8 不同类型数据间的转换不同类型数据间的转换2第第5章章继承和派生继承和派生本章内容本章内容p5.1 继承和派生的概念继承和派生的概念p5.2 派生类的声明方法派生类的声明方法p5.3 派生类的构成派生类的构成p5.4 派生类成员的访问属性派生类成员的访问属性p5.5 派生类的构造函数和析构函数派生类的构造函数和析构函数p5.6 多重继承多重继承p5.7 基类和派生类的转换基类和派生类的转换p5.8 继承与组合继承与组合4目标目标q理解派生和继承的相关概念;理解派生和继承的相关概念;q掌握派生类的声明方式掌握派生类的声明方式q掌握派生类的构成和成员的访问属性;掌握派生类的构成和成员的访问属性;q掌握派生类构造函数和析构函数的使用方掌握派生类构造函数和析构函数的使用方法;法;q掌握多重继承的方法;掌握多重继承的方法;q理解基类和派生类的转换方法;理解基类和派生类的转换方法;q理解继承与组合的含义。理解继承与组合的含义。55.1 继承与派生的概念继承与派生的概念继承:继承:继承继承是类之间定义的一种重要是类之间定义的一种重要关系关系。人人学生学生老师老师大学生大学生研究生研究生硕士生硕士生博士生博士生专科生专科生本科生本科生在职研究生在职研究生65.1 继承与派生的概念继承与派生的概念B类继承类继承A类,或称从类类,或称从类A派生出派生出B类,则类,则A类类称为称为基类(父类),基类(父类),类类B称为称为派生类(子类)派生类(子类)。人人学生学生老师老师大学生大学生研究生研究生硕士生硕士生博士生博士生专科生专科生本科生本科生在职研究生在职研究生75.1 继承与派生的概念继承与派生的概念单继承:单继承:派生类从一个基类派生的继承关系。派生类从一个基类派生的继承关系。多继承:多继承:派生类从多个基类派生的继承关系。派生类从多个基类派生的继承关系。人人学生学生老师老师大学生大学生研究生研究生硕士生硕士生博士生博士生专科生专科生本科生本科生在职研究生在职研究生85.1 继承与派生的概念继承与派生的概念q例:例:q1、定义一个学生类、定义一个学生类Student,包括学生和姓,包括学生和姓名,以及显示信息的函数。名,以及显示信息的函数。q2、定义一个大学生类、定义一个大学生类CollegeStudent,包,包括学生、姓名和专业,以及显示信息的函数。括学生、姓名和专业,以及显示信息的函数。95.1 继承与派生的概念继承与派生的概念class Student public: void display() coutnum; coutname; private: int num; string name;class CollegeStudent public: void display() coutnum; coutname; coutspeciality; private: int num; string name; string speciality;能否在定义能否在定义CollegeStudent时利用时利用Student,而不用重新而不用重新定义已有的成员?定义已有的成员?105.2 派生类的声明方式派生类的声明方式q声明派生类的一般形式为:声明派生类的一般形式为:class 派生类名派生类名 : 继承方式继承方式 基类名基类名 派生类新增成员;派生类新增成员; q继承方式:继承方式:public、private和和protected,默认为默认为private。115.2 派生类的声明方式派生类的声明方式class CollegeStudent:public Student public:void display1()coutnumname; void display( ) coutnumname; private:int num; string name;class CollegeStudent:private Student public:void display( ) coutspeciality; private:string speciality;155.4 派生类成员的访问属性派生类成员的访问属性(一)公有继承(一)公有继承public 成员成员protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可访问不可访问16class Student public:void display( ) coutnumname; private:int num; string name;class CollegeStudent:public Student public:void display1( ) coutnumname speciality; private:string speciality;num和和name在派在派生类中不可访问。生类中不可访问。17class Student ;class CollegeStudent:public Student public: void display1( ) coutspeciality; private:string speciality;void main()CollegeStudent s;s.display();s.display1();return 0;185.4 派生类成员的访问属性派生类成员的访问属性(二)私有继承(二)私有继承public 成员成员protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可访问不可访问private 成员成员private 成员成员19class Student public: void display() coutnumname; private: int num; string name;class CollegeStudent:private Student public: void display1( ) coutspeciality; private: string speciality;void main()CollegeStudent s;s.display();s.display1();s. speciality=“Computer”;return 0; 20class Student public: void display() coutnumname; private: int num; string name;class CollegeStudent:private Student public: void display1( ) display(); coutspeciality; private: string speciality;void main()CollegeStudent s;s.display1();return 0; 215.4 派生类成员的访问属性派生类成员的访问属性(三)保护继承(三)保护继承public 成员成员protected 成员成员private 成员成员public 成员成员protected 成员成员private 成员成员基类基类派生类派生类不可访问不可访问protected 成员成员protected 成员成员225.4 派生类成员的访问属性派生类成员的访问属性(三)保护继承(三)保护继承q由由protected声明的成员称为声明的成员称为受保护成员受保护成员,简称简称保护成员保护成员。q在同一类中保护成员和私有成员一样,只在同一类中保护成员和私有成员一样,只能被类内部的成员函数访问,而不能被类能被类内部的成员函数访问,而不能被类外访问。外访问。q保护成员可以被保护成员可以被派生类的成员函数派生类的成员函数访问。访问。23class Student private: int num; protected:string name; ;class CollegeStudent:protected Student public: void display ( ) coutnum; coutname; ;void main()CollegeStudent s;s.display ();s. name=“Zhang”;return 0; 24总结总结q类的成员的访问属性类的成员的访问属性qPublic:可以再类内通过成员函数来访问,:可以再类内通过成员函数来访问,也可以在类外通过对象来访问。也可以在类外通过对象来访问。qPrivate:只能再类内通过成员函数来访问:只能再类内通过成员函数来访问qProtected:只能再类内通过成员函数来:只能再类内通过成员函数来访问访问25总结总结q派生后成员访问属性在派生类中的变化:派生后成员访问属性在派生类中的变化:q原来在基类中的访问属性原来在基类中的访问属性与与上继承时的继承方上继承时的继承方式,即为基类成员在派生类中新的访问属性。式,即为基类成员在派生类中新的访问属性。Class 基类基类 public:成员:成员j1 protected:成员:成员j2 private:成员:成员j3;Class 派生类:派生类: 基类基类 public:成员:成员p1 protected:成员:成员p2 private:成员:成员p3;public , j1 , j226总结总结q派生后成员访问属性在派生类中的变化:派生后成员访问属性在派生类中的变化:q原来在基类中的访问属性原来在基类中的访问属性与与上继承时的继承方上继承时的继承方式,即为基类成员在派生类中新的访问属性。式,即为基类成员在派生类中新的访问属性。Class 基类基类 public:成员:成员j1 protected:成员:成员j2 private:成员:成员j3;Class 派生类:派生类: 基类基类 public:成员:成员p1 protected:成员:成员p2 private:成员:成员p3;Protected , j2 , j127总结总结q派生后成员访问属性在派生类中的变化:派生后成员访问属性在派生类中的变化:q原来在基类中的访问属性原来在基类中的访问属性与与上继承时的继承方上继承时的继承方式,即为基类成员在派生类中新的访问属性。式,即为基类成员在派生类中新的访问属性。Class 基类基类 public:成员:成员j1 protected:成员:成员j2 private:成员:成员j3;Class 派生类:派生类: 基类基类 public:成员:成员p1 protected:成员:成员p2 private:成员:成员p3;private , j2 , j128练习练习class A /基类基类public: int i; protected: void f2(); int j; private: int k;class B: public A /public方式方式public: void f3( ); protected: void f4(); private: int m;class C: protected B /protected方式方式public: void f5(); private: int n;29练习练习q例课后第一、二、三、四、五题例课后第一、二、三、四、五题305.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(一)简单派生类的构造函数(一)简单派生类的构造函数q简单派生类只有一个基类,数据成员中不简单派生类只有一个基类,数据成员中不包括基类的对象。包括基类的对象。q简单派生类构造函数的定义形式为:简单派生类构造函数的定义形式为:派生类构造函数(总参数列表)派生类构造函数(总参数列表): 基类构造函基类构造函数(数(参数列表参数列表)派生类中新增数据成员初始化;派生类中新增数据成员初始化;31class Stu public:Stu(int n,string na) num=n; name=na; protected:int num; string name;class ColStu:public Stu public:ColStu(int n,string na,string s):Stu(n,na)speciality=s; void display()coutnumnamespeciality; private:string speciality;325.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(一)简单派生类的构造函数(一)简单派生类的构造函数q构造函数的执行顺序:构造函数的执行顺序:1.基类的构造函数。基类的构造函数。2.派生类的构造函数。派生类的构造函数。q析构函数的执行顺序:析构函数的执行顺序:1.派生类的析构函数。派生类的析构函数。2.基类的析构函数。基类的析构函数。33简单派生类的构造函数简单派生类的构造函数派生类构造函数(总参数列表)派生类构造函数(总参数列表): 基类构造函基类构造函数(数(参数列表参数列表)派生类中新增数据成员初始化;派生类中新增数据成员初始化;q构造函数的执行顺序:构造函数的执行顺序:1.基类的构造函数。基类的构造函数。2.派生类的构造函数。派生类的构造函数。q析构函数的执行顺序:析构函数的执行顺序:1.派生类的析构函数。派生类的析构函数。2.基类的析构函数。基类的析构函数。345.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(二)有(二)有子对象子对象的派生类的构造函数的派生类的构造函数q有子对象的派生类是指类的成员包括类的有子对象的派生类是指类的成员包括类的对象。对象。class Stu protected:int num; string name;class ColStu:public Stu public:void display( );private:string speciality; Stu s;355.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(二)有子对象的派生类的构造函数(二)有子对象的派生类的构造函数q有子对象的派生类构造函数的一般形式为:有子对象的派生类构造函数的一般形式为:派生类构造函数(总参数列表)派生类构造函数(总参数列表): 基类构造函基类构造函数(参数列表)数(参数列表),子对象名(参数列表)子对象名(参数列表)派生类中新增数据成员初始化;派生类中新增数据成员初始化;365.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(二)有子对象的派生类的构造函数(二)有子对象的派生类的构造函数q构造函数的执行顺序:构造函数的执行顺序:1.基类的构造函数。基类的构造函数。2.子对象的构造函数。子对象的构造函数。3.派生类的构造函数。派生类的构造函数。375.5 派生类的构造函数和析构函数派生类的构造函数和析构函数class B public: B(int bb) b=bb; private: int b;class C:public B public: C(int cc) c=cc; private: B memB; int c;找问题找问题 Cint b; /基类数据成员基类数据成员 int c; /新增数据成员新增数据成员 B menB; /内嵌内嵌子对象子对象 如何初如何初始化?始化?38class B private: int b; public: B(int bb) b=bb; coutB:bendl; ;class C:public B public:C(int aa,int bb,int cc): B(aa) , memB(bb) c=cc; coutC:cendl;private:B memB;int c;void main() C c(1,2,3); 395.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(三)多层派生时的构造函数(三)多层派生时的构造函数q一个类不仅可以派生出一个派生类,派生一个类不仅可以派生出一个派生类,派生类还可以继续派生,形成派生的层次结构。类还可以继续派生,形成派生的层次结构。q多层继承时的访问属性多层继承时的访问属性q多层派生时的构造函数不用列出每一层派多层派生时的构造函数不用列出每一层派生类的构造函数,只须写出其生类的构造函数,只须写出其上一层派生上一层派生类(即类(即直接基类直接基类)的构造函数)的构造函数即可。即可。40class Apublic:A(int aa) a=aa; private:int a;class B:public A public:B(int aa,int bb):A(aa) b=bb; private: int b;class C:public B public:C(int aa,int bb,int cc):B(aa,bb) c=cc; private:int c;415.5 派生类的构造函数和析构函数派生类的构造函数和析构函数q什么时候在声明派生类的构造函数时需要什么时候在声明派生类的构造函数时需要对基类或对象成员进行初始化?对基类或对象成员进行初始化?q如果派生类的基类或内嵌子对象所属的类如果派生类的基类或内嵌子对象所属的类中没有提供默认构造函数时,派生类需要中没有提供默认构造函数时,派生类需要声明构造函数声明构造函数,对继承的基类成员和内嵌,对继承的基类成员和内嵌子对象的成员进行初始化。子对象的成员进行初始化。425.5 派生类的构造函数和析构函数派生类的构造函数和析构函数q构造函数的执行顺序:构造函数的执行顺序:1.基类的构造函数。基类的构造函数。2.子对象的构造函数。子对象的构造函数。3.派生类的构造函数。派生类的构造函数。q析构函数的执行顺序:析构函数的执行顺序:1.派生类的析构函数。派生类的析构函数。2.子对象的析构函数。子对象的析构函数。3.基类的析构函数。基类的析构函数。43class Apublic: A(int aa) a=aa; coutA:aendl; A( ) coutAendl; private: int a;class Bpublic: B(int bb) b=bb; coutB:bendl; B( ) coutBendl; private: int b;class C: public Bpublic: C(int aa,int bb,int cc):B(bb),a(aa) c=cc; coutC:cendl; C( ) coutCendl; private: A a; int c;void main() C c(1,2,3); 445.6 多重继承多重继承q多重继承:一个派生类同时继承多个基类。多重继承:一个派生类同时继承多个基类。455.6 多重继承多重继承(一)声明多重继承的方法(一)声明多重继承的方法class 派生类名派生类名 : 继承方式继承方式基类名基类名1 ,继继承方式承方式基类名基类名2, .,继承方式继承方式基类名基类名n 派生类成员声明;派生类成员声明;46class Apublic:displayA couta; int a;class B public:displayB coutb; int b;class C:public A,public B public:displayC coutc; private:int c;47Cint a;int b;int c;void DisplayA( );void DisplayB( );void DisplayC( );Aint a;void DisplayA( );Bint b;void DisplayB( );5.6 多重继承多重继承485.6 多重继承多重继承(二)多重继承派生类的构造函数(二)多重继承派生类的构造函数q多继承下的构造函数和析构函数与单继承多继承下的构造函数和析构函数与单继承下的构造函数和析构函数是相似的,派生下的构造函数和析构函数是相似的,派生类的构造函数需要对类的构造函数需要对基类成员、内嵌子对基类成员、内嵌子对象象和和新增成员新增成员进行初始化。进行初始化。49class A public: A(int aa=0) a=aa; private: int a;class B public: B(int bb=0) b=bb; private: int b;class C:public A,public B public: private: A a; B b; int c;构造函数构造函数C(int a1,int a2,int b1,int b2,int cc):A(a1),a(a2),B(b1),b(b2) c=cc; 50class B1 public: B1(int i) coutB1 iendl; ;class B2 public: B2(int j) coutB2 jendl; ;class B3 public: B3( ) coutB3 *endl; ;class C:public B2,public B1,public B3public:C(int a,int b,int c,int d):B1(a),memB2(d),memB1(c),B2(b) private: B1 memB1; B2 memB2; B3 memB3;void main() C obj(1,2,3,4); 51q(二)多重继承派生类的构造函数(二)多重继承派生类的构造函数q格式:格式:q派生类构造函数名(总参数列表):基类派生类构造函数名(总参数列表):基类1构造函构造函数(参数列表),基类数(参数列表),基类2构造函数(参数列表),构造函数(参数列表),子对象子对象 1 (参数列表),子对象(参数列表),子对象 2 (参数列表)(参数列表)qq派生类中新增数据成员初始化语句派生类中新增数据成员初始化语句qq注意:注意:调用基类、子对象的构造函数的顺序是按调用基类、子对象的构造函数的顺序是按照照声明派生类时基类、子对象出现的顺序声明派生类时基类、子对象出现的顺序来调用来调用的。的。525.6 多重继承多重继承(三)多重继承引起的二义性问题(三)多重继承引起的二义性问题class A public: void display() coutAendl; ;class B public: void display() coutBendl; ;class C: public A,public B ;void main() C c; c.display(); 找问题找问题535.6 多重继承多重继承(三)多重继承引起的二义性问题(三)多重继承引起的二义性问题Avoid display();Bvoid display();Cvoid A:display();void B:display();C c;c.display();C c;c.A:display(); c.B:display();54class A public: void display() coutAendl; ;class B public: void display() coutBendl; ;class C: public A,public B public: void display() coutCendl; ;void main() C c; c.display(); 5.6 多重继承多重继承55复习复习q5.5 派生类的构造函数和析构函数派生类的构造函数和析构函数q(一)简单派生类的构造函数(一)简单派生类的构造函数q(二)有(二)有子对象子对象的派生类的构造函数的派生类的构造函数q(三)多层派生时的构造函数(三)多层派生时的构造函数q5.6 多重继承多重继承q(一)声明多重继承的方法(一)声明多重继承的方法q(二)多重继承派生类的构造函数(二)多重继承派生类的构造函数q(三)多重继承引起的二义性问题(三)多重继承引起的二义性问题56简单派生类的构造函数简单派生类的构造函数派生类构造函数(总参数列表)派生类构造函数(总参数列表): 基类构造函基类构造函数(数(参数列表参数列表)派生类中新增数据成员初始化;派生类中新增数据成员初始化;q构造函数的执行顺序:构造函数的执行顺序:1.基类的构造函数。基类的构造函数。2.派生类的构造函数。派生类的构造函数。q析构函数的执行顺序:析构函数的执行顺序:1.派生类的析构函数。派生类的析构函数。2.基类的析构函数。基类的析构函数。57class Stu public:Stu(int n,string na) num=n; name=na; protected:int num; string name;class ColStu:public Stu public:ColStu(int n,string na,string s):Stu(n,na)speciality=s; void display()coutnumnamespeciality; private:string speciality;58(二)有子对象的派生类的构造函数(二)有子对象的派生类的构造函数派生类构造函数(总参数列表)派生类构造函数(总参数列表): 基类构造函基类构造函数(参数列表)数(参数列表),子对象名(参数列表)子对象名(参数列表)派生类中新增数据成员初始化;派生类中新增数据成员初始化;q构造函数的执行顺序:构造函数的执行顺序:1.基类的构造函数。基类的构造函数。2.子对象的构造函数。子对象的构造函数。3.派生类的构造函数。派生类的构造函数。59class B private: int b; public: B(int bb) b=bb; coutB:bendl; ;class C:public B public:C(int aa,int bb,int cc): B(aa) , memB(bb) c=cc; coutC:cendl;private:B memB;int c;void main() C c(1,2,3); 60(三)多层派生时的构造函数(三)多层派生时的构造函数q多层派生时的构造函数不用列出每一层派多层派生时的构造函数不用列出每一层派生类的构造函数,只须写出其生类的构造函数,只须写出其上一层派生上一层派生类(即类(即直接基类直接基类)的构造函数)的构造函数即可。即可。61class Apublic:A(int aa) a=aa; private:int a;class B:public A public:B(int aa,int bb):A(aa) b=bb; private: int b;class C:public B public:C(int aa,int bb,int cc):B(aa,bb) c=cc; private:int c;625.6 多重继承多重继承(一)声明多重继承的方法(一)声明多重继承的方法class 派生类名派生类名 : 继承方式继承方式基类名基类名1 ,继继承方式承方式基类名基类名2, .,继承方式继承方式基类名基类名n 派生类成员声明;派生类成员声明;63class Apublic:displayA couta; int a;class B public:displayB coutb; int b;class C:public A,public B public:displayC coutc; private:int c;64q(二)多重继承派生类的构造函数(二)多重继承派生类的构造函数q格式:格式:q派生类构造函数名(总参数列表):基类派生类构造函数名(总参数列表):基类1构造函构造函数(参数列表),基类数(参数列表),基类2构造函数(参数列表),构造函数(参数列表),子对象子对象 1 (参数列表),子对象(参数列表),子对象 2 (参数列表)(参数列表)qq派生类中新增数据成员初始化语句派生类中新增数据成员初始化语句qq注意:注意:调用基类、子对象的构造函数的顺序是按调用基类、子对象的构造函数的顺序是按照照声明派生类时基类、子对象出现的顺序声明派生类时基类、子对象出现的顺序来调用来调用的。的。65class B1 public: B1(int i) coutB1 iendl; ;class B2 public: B2(int j) coutB2 jendl; ;class B3 public: B3( ) coutB3 *endl; ;class C:public B2,public B1,public B3public:C(int a,int b,int c,int d):B1(a),memB2(d),memB1(c),B2(b) private: B1 memB1; B2 memB2; B3 memB3;void main() C obj(1,2,3,4); 665.6 多重继承多重继承q(三)多重继承引起的二义性问题(三)多重继承引起的二义性问题q1、两个基类有同名成员、两个基类有同名成员q2、两个基类和派生类有同名成员、两个基类和派生类有同名成员q3、两个直接基类都继承于同一基类、两个直接基类都继承于同一基类675.6 多重继承多重继承(三)多重继承引起的二义性问题(三)多重继承引起的二义性问题Avoid display();Bvoid display();Cvoid A:display();void B:display();C c;c.display();C c;c.A:display(); c.B:display();685.6 多重继承多重继承(三)多重继承引起的二义性问题(三)多重继承引起的二义性问题q派生类新增加的同名成员将派生类新增加的同名成员将覆盖覆盖基类中的基类中的同名成员。同名成员。69class A public: void display() coutaendl; ;class B:public A ;class C:public A ;class D:public B,public C public: void display() coutaendl; ;void main() D d; d.display(); /D类的类的display() c.B:display( ); /B类从类从A类继承的类继承的display() c.C:display( ); /C类从类从A类继承的类继承的display()705.6 多重继承多重继承Aint a;void display();Eint B:a; int C:a; int D:a;void B:display(); void C:display(); void D:display();Bint A:a;void A:display();Dint A:a;void A:display();Cint A:a;void A:display();E中能否只保中能否只保留一份留一份A的的a和和display()?715.6 多重继承多重继承(四)虚基类(四)虚基类q虚基类的作用:可以使得在继承间接共同虚基类的作用:可以使得在继承间接共同基类时只保留一份成员。基类时只保留一份成员。q虚基类是在虚基类是在派生类派生类的声明过程中声明的声明过程中声明的,的,一般形式为:一般形式为:class 派生类名派生类名:virtual 继承方式继承方式 基类名基类名 派生类的定义;派生类的定义; 72class Apublic: int a; void display( ) coutaa=7;p只能访问只能访问objb中基中基类成员类成员a,而不能访,而不能访问问objb 中新增加的中新增加的成员成员b。78q类的组合:在一个类中以另一个类的对象类的组合:在一个类中以另一个类的对象作为数据成员。作为数据成员。5.8 继承与组合继承与组合class Teacher private: int num; string name;class BirthDate private: int year,month,day;class Professor:public Teacher private: BirthDate birthday;79q继承建立了派生类与基类之间的一种继承建立了派生类与基类之间的一种“是是”的关系,是纵向的。的关系,是纵向的。q组合建立了成员类和组合类(复合类)之组合建立了成员类和组合类(复合类)之间的一种间的一种“有有”的关系,是横向的。的关系,是横向的。5.8 继承与组合继承与组合80总结总结q本章主要讲授内容本章主要讲授内容继承和派生的概念继承和派生的概念派生类的声明方法派生类的声明方法派生类的构成和成员的访问属性派生类的构成和成员的访问属性派生类构造函数和析构函数派生类构造函数和析构函数多重继承多重继承基类与派生类的转换基类与派生类的转换继承与组合继承与组合81目标目标q理解派生和继承的相关概念;理解派生和继承的相关概念;q掌握派生类的声明方式掌握派生类的声明方式q掌握派生类的构成和成员的访问属性;掌握派生类的构成和成员的访问属性;q掌握派生类构造函数和析构函数的使用方掌握派生类构造函数和析构函数的使用方法;法;q掌握多重继承的方法;掌握多重继承的方法;q理解基类和派生类的转换方法;理解基类和派生类的转换方法;q理解继承与组合的含义。理解继承与组合的含义。82练习练习q课后第七、八题课后第七、八题q以点(以点(point)类为基类,派生类圆类,圆由圆心)类为基类,派生类圆类,圆由圆心和半径定义。派生类操作判断任一坐标点是在图和半径定义。派生类操作判断任一坐标点是在图形内,还是在图形的边缘上,还是在图形外。形内,还是在图形的边缘上,还是在图形外。 83
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号