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");
}