C++学习笔记_8:类的组合

来源:互联网 发布:26周胎儿发育标准数据 编辑:程序博客网 时间:2024/05/16 09:15
//组合的概念:类中的成员数据是另一个类的对象。//可以在已有的抽象的基础上实现更复杂的抽象。//通过对复杂对象进行分解、抽象,使我们能够将一个复杂对象理解为简单对象的组合。//分解得到复杂对象的部件对象,这些部件对象比它高层的复杂对象更容易理解和实现。然后由这些部件对象来"装配"复杂对象。 //类组合的构造函数设计://原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。//声明形式://类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),......//{  本类初始化  }//构造函数调用顺序://1.先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)//2.若调用缺省构造函数(即无形参的),则内嵌对象的初始化也将调用相应的缺省构造函数。#include<iostream.h>#include<math.h>class Point{   private:   float x,y; //点的坐标public:   Point(float xx,float yy)   {   cout<<"point构造函数"<<endl;        x = xx; y = yy;   }   Point(Point &p)   {           x = p.x; y = p.y;cout<<"point 拷贝构造函数"<<endl;   }   float GetX(void){return x;}   float GetY(void){return y;}         };class Distance{      private:Point  p1,p2; //线段的两个端点double dist;double price;public:Distance(Point a,Point b,double p); //构造函数double GetDis(void){return dist;}; };Distance:: Distance(Point a,Point b ,double p=30):p1(a),p2(b)//组合类构造函数 { cout<<" Distance构造函数"<<endl;double x=double(p1.GetX()-p2.GetX());double y=double(p1.GetY()-p2.GetY());dist=sqrt(x*x+y*y);price=p;}int main(){Point myp1(1,1),  myp2(4,5);Distance myd(myp1,myp2);cout<<"the distance is :";cout<<myd.GetDis()<<endl;return 0;}

原创粉丝点击