C++类的组合

来源:互联网 发布:开源团购java 编辑:程序博客网 时间:2024/05/16 13:05

类的组合是一个非常重要的只是点,它可以在已有抽象的基础上实现更复杂的抽象。

组合的概念是类中的成员数据是另一个类的对象

下面重点讲解类组合的构造函数设计

原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化

规范:

类名::类名(对象成员所需的形参,本类成员形参):对象1(形参),对象2(形参)

举例:

线段中包含点

class Point

{

public:

      Point(double xx, double yy)

      {

             cout << "调用Point构造函数" << endl;

             x = xx;

             y = yy;

      }

      Point(Point & p)

      {

             cout << "调用Point拷贝构造函数" << endl;

             x = p.x;

             y = p.y;

      }

      double GetX( )

      {

             return x;

      }

      double GetY( )

      {

             return y;

      }

private:

      double x;

      double y;

};

 

class Distance

{

public:

       Distance(Point a, Point b):p1(a), p2(b)

       {

             cout << "调用Distance构造函数" << endl;

             double x = p1.GetX( ) + p2.GetX( );

             double y = p1.GetY( ) + p2.GetY( );

             dist = sqrt(x*x + y*y);

       }

       double GetDist( )

       {

             return dist;

       }

private:

       Point p1, p2;

       double dist;

};

 

void main( )

{

      Point p1(1.1, 2.2), p2(3.3, 4.4);

      Distance d(p1, p2);

      cout << "the distance is " << endl;

      cout << d.GetDist( ) << endl;

 

      return;

}

 

打印结果

-----------------------------------------------

调用Point构造函数
调用Point构造函数
调用Point拷贝构造函数
调用Point拷贝构造函数
调用Point拷贝构造函数
调用Point拷贝构造函数
调用Distance构造函数
the distance is 2.82843

-----------------------------------------------

 

0 0
原创粉丝点击