欢迎来到天天文库
浏览记录
ID:40800928
大小:1.10 MB
页数:83页
时间:2019-08-07
《c++类的重用与多态性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录10.1类的组合10.2类的继承与派生10.3访问控制10.4类型兼容规则10.5多态性10.6派生类的构造、析构函数10.7派生类成员的标识与访问10.8小结110.1.1组合类中的成员数据是另一个类的对象。可以在已有抽象的基础上实现更复杂的抽象。210.1类的组合类组合的构造函数设计原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。声明形式:类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),......{本类初始化}310.1类的组合——10.1.1组合类组合的构造函数调用构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时
2、的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)初始化列表中未出现的内嵌对象,用默认构造函数(即无形参的)初始化系统自动生成的隐含的默认构造函数中,内嵌对象全部用默认构造函数初始化410.1类的组合——10.1.1组合例10-1(教材例4-4)类的组合,线段(Line)类//4_4.cpp#include#includeusingnamespacestd;classPoint{//Point类定义public:Point(intxx=0,intyy=0){x=xx;y=yy;}Point(Point&p);intgetX
3、(){returnx;}intgetY(){returny;}private:intx,y;};Point::Point(Point&p){//拷贝构造函数的实现x=p.x;y=p.y;cout<<"CallingthecopyconstructorofPoint"<4、类的对象p1,p2doublelen;};//组合类的构造函数Line::Line(Pointxp1,Pointxp2):p1(xp1),p2(xp2){cout<<"CallingconstructorofLine"<(p1.getX()-p2.getX());doubley=static_cast(p1.getY()-p2.getY());len=sqrt(x*x+y*y);}Line::Line(Line&l):p1(l.p1),p2(l.p2){//组合类的拷贝构造函数cout<<"Calling5、thecopyconstructorofLine"<6、7、Thelengthofthelineis:5Thelengthoftheline2is:510.1.2前向引用声明类应该先声明,后使用如果需要在某个类的声明之前,引用该类,则应进行前向引用声明。前向引用声明只为程序引入一个标识符,但具体声明在其他地方。810.1类的组合举例classB;//前向引用声明classA{public:voidf(Bb);};classB{public:voidg(Aa);};910.1类的组合——10.1.2前向引
4、类的对象p1,p2doublelen;};//组合类的构造函数Line::Line(Pointxp1,Pointxp2):p1(xp1),p2(xp2){cout<<"CallingconstructorofLine"<(p1.getX()-p2.getX());doubley=static_cast(p1.getY()-p2.getY());len=sqrt(x*x+y*y);}Line::Line(Line&l):p1(l.p1),p2(l.p2){//组合类的拷贝构造函数cout<<"Calling
5、thecopyconstructorofLine"<6、7、Thelengthofthelineis:5Thelengthoftheline2is:510.1.2前向引用声明类应该先声明,后使用如果需要在某个类的声明之前,引用该类,则应进行前向引用声明。前向引用声明只为程序引入一个标识符,但具体声明在其他地方。810.1类的组合举例classB;//前向引用声明classA{public:voidf(Bb);};classB{public:voidg(Aa);};910.1类的组合——10.1.2前向引
6、7、Thelengthofthelineis:5Thelengthoftheline2is:510.1.2前向引用声明类应该先声明,后使用如果需要在某个类的声明之前,引用该类,则应进行前向引用声明。前向引用声明只为程序引入一个标识符,但具体声明在其他地方。810.1类的组合举例classB;//前向引用声明classA{public:voidf(Bb);};classB{public:voidg(Aa);};910.1类的组合——10.1.2前向引
7、Thelengthofthelineis:5Thelengthoftheline2is:510.1.2前向引用声明类应该先声明,后使用如果需要在某个类的声明之前,引用该类,则应进行前向引用声明。前向引用声明只为程序引入一个标识符,但具体声明在其他地方。810.1类的组合举例classB;//前向引用声明classA{public:voidf(Bb);};classB{public:voidg(Aa);};910.1类的组合——10.1.2前向引
此文档下载收益归作者所有