第六章 类与对象 类的包含

类的包含(类的组合)

1.组合描述的是类与类之间的整体与部分的关系,即如果在逻辑上A是B的一部分,则允许A和其他数据成员组合成B。例如:发动机、车轮、电池、车门、方向盘、底盘都是小汽车的一部分,它们组合成汽车,而不能说发动机是汽车的一种。
2. 类的组合,指的是类中内嵌其它类的对象作为成员数据:
实现组合用类成员表示,即一个类中的数据成员是另一个已经定义的类的对象。
3. 可以在已有抽象的基础上实现更复杂的抽象。

类包含的构造函数设计

 原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。
 类的构造函数要包含对象成员的初始化。如果构造函数的成员初始化列表没有对成员对象初始化时,则使用成员对象的无参(缺省)构造函数。
 声明形式:

类名::类名(对象成员所需的形参,本类成员形参) :对象1(参数),对象2(参数)......
{ 本类初始化 }//初始化列表

类包含的构造函数调用

 构造函数调用顺序:
1. 先调用成员对象的构造函数。
2. 当全部成员对象都执行了自身类的构造函数后,再执行当前类的构造函数。
3. 成员对象的构造函数调用次序和成员对象在类中的定义次序一致(若定义顺序为:a1、b1、 b2),与它们在成员初始化列表中出现的次序无关(初始化列表顺序为:b1、b2、a1)。
 析构函数的调用顺序相反

用类包含计算两点之间的距离

#include<iostream>
#include<cmath>
using namespace std;
class Point
{ public:
Point(int xi=0,int yi=0) {x=xi;y=yi;}
int GetX(){return x;}
int GetY(){return y;}
private: int x; int y;
};
class Line
{
public:
Line(Point xp1,Point xp2):p1(xp1),p2(xp2){dist=0;}
Line(int xi=0,int yi=0,int xj=0,int yj=0):p1(xi,yi),p2(xj,yj){dist=0;}
void Distance()
{
float x1,y1,x2,y2;
x1=p1.GetX(); y1=p1.GetY();x2=p2.GetX(); y2=p2.GetY();
dist=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double GetDis() {return dist;}
private:
Point p1, p2;
double dist;
};
int main( )
{
Point p1(2,2),p2(2,5);
Line x1(p1,p2);
x1.Distance();
cout<<x1.GetDis()<<endl;
Line x2(3,2,3,6);
x2.Distance();
cout<<x2.GetDis()<<endl;
return 0;
}

输出
3
4

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jdicat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值