C++组合对象和友元函数介绍

2018/4/27

C++

1.组合对象

1.简单介绍:

组合对象就是将一个对象中使用另外一个对象,比如说在线中使用了点的坐标,在面中使用了线的相关设定;

2.操作方法:

使用普通构造函数或者直接使用拷贝构造函数对类进行初始化

Line::Line(Point point1, Point point2)
{
	p1 = point1;
	p2 = point2;
}

从而在一个类中使用了另一个类的对象以及属性

2.对于对象的操作

&:取地址
*取值
new:动态生成一个对象,将对象在内存中的首地址进行返回
Point p1;//创建了一个对象
Point &p2=p1;//引用对象,把p1的值给p2 再保存地址
Point *p3=&p1;//使用对象指针,指向对象的地址 没有创建新的对象,引用对象的方法一致(*pow.fuction)
Point p4[3];//对象数组
动态空间分配
Point &p2=*(new Point);
Point *p3=new Point;

注:调用类的private限定值的时候,不能直接进行调用,需要使用接口函数进行调用

3.友元关系

1.为什么要设置友元关系

1-1.在同一类中设置友元关系,便于调用private中的变量,而且不用使用接口函数

1-2.在不同类中,方使直接访问其中的private型参数

2.友元类的设置方法

2-1.普通函数作为友元函数
2-2.一个类的函数作为另外一个类的友元函数

2-3.友元类

3.采用关键字 private

//建立两个类  设置一个类为另外一个类的友元类

class Point
{
public:
	Point();//默认构造
	//注:一般情况下  系统会给予一个默认的构造函数,但是如果自己使用了带参构造,就不会再使用构造函数了 
	Point(float x, float y);//带参构造

	void draw();
	friend class Line;//友元类
private:
	double x, y;//设置私有属性

};
class Line
	//使用另外一个类作为该类的变量
{
public:
	//使用了组合对象的方式
	Line(Point p1, Point p2);
	float getLength();
private:
	Point p1, p2;
};

#include"text.h"
#include<iostream>
#include<stdlib.h>
//实现Point类函数的定义
Point::Point()
{
	x = 0.0;
	y = 0.0;
}
Point::Point(float x, float y)
{
	this->x = x;
	this->y = y;
}
void Point::draw()
{
	std::cout << "point x:" <<x<< std::endl;
	std::cout << "point y:" << y << std::endl;
}
//对line类的定义
Line::Line(Point point1, Point point2)
{
	p1 = point1;
	p2 = point2;
}
float Line::getLength()
{
	return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
	//由于使用了friend标识符,可以直接使用类中的私有属性,而不用去采用接口函数
}

void main()
{
	Point p1(1.0, 2.0), p2(-1.0, -2.0);
	Line line1(p1, p2);
	p1.draw();
	p2.draw();
	std::cout << line1.getLength() << std::endl;
	system("pause");
}




          


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值