1.封装
(1)构造函数不是必须在的
可以通过行为修改属性
(2)private和protected区别在于继承那里要学
(3)类默认是私有,struct是共有
私有的好处:控制数据的有效性,意思是在外面给函数的方式写,可以设置多少多少就不能写那种
(4)cube例子不会的点
类内写:
bool equal2(cube& c2)
{if (h == c2.h && w == c2.w && l == c2.l)return true;return false;
}
类外写:cout << cu.equal2(cu2);
(5)点和圆的关系
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
class point
{int x, y;//点所在的位置
public:point(int x, int y){this->x = x; this->y = y;}int getx(){return x;}int gety(){return y;}
};
class circle
{//int o,r;//分别是圆心所在的位置和半径,不行,得要二维数组int x, y, r;
public:circle(int x, int y, int r){this->r = r; this->x = x; this->y = y;}/*int geto()//一个坐标一个坐标访问{//return o;不需要呀,因为你有构造函数了,可是无法访问呀?}*/int getx(){return x;}int gety(){return y;}int getr(){return r;}//把判断变成成员函数,传进来x,yvoid relation(point& p){//先求出两点之间的距离,开根号sqrt()int d = sqrt((p.getx() - x) * (p.getx() - x) + (p.gety() - y) * (p.gety() - y));if (d < r)cout << "点在圆内" << endl;else if (d == r)cout << "点在圆上" << endl;else cout << "点在圆外" << endl;}
};int main()
{circle c(2, 5, 3);point p(4, 4);//求点和圆的位置关系//点在圆内点在圆上点在员外//只需要将半径和这俩点之间的关系比较即可c.relation(p);
}
全局函数yyds
#include<iostream>
#include<stdio.h>
#include<math.h>
//class point;
using namespace std;
class circle
{//int o,r;//分别是圆心所在的位置和半径,不行,得要二维数组int x, y, r;
public://class point;circle(int x,int y, int r){this->r = r; this->x = x; this->y = y;}/*int geto()//一个坐标一个坐标访问{//return o;不需要呀,因为你有构造函数了,可是无法访问呀?}*/int getx(){return x;}int gety(){return y;}int getr(){return r;}//把判断变成成员函数,传进来x,y/*void relation(point& p){//先求出两点之间的距离,开根号sqrt()int d = sqrt((p.getx() - x) * (p.getx() - x) + (p.gety() - y) * (p.gety() - y));if (d < r)cout << "点在圆内" << endl;else if (d == r)cout << "点在圆上" << endl;else cout << "点在圆外"<<endl;}*/
};
class point
{int x,y;//点所在的位置
public:point(int x,int y){this->x = x; this->y = y;}int getx(){return x;}int gety(){return y;}
};
//全局函数还是好
void relation(circle c, point p)
{int d = sqrt((p.getx() - c.getx()) * (p.getx() - c.getx()) + (p.gety() - c.gety()) * (p.gety() - c.gety()));if (d < c.getr())cout << "点在圆内" << endl;else if (d == c.getr())cout << "点在圆上" << endl;else cout << "点在圆外" << endl;
}
int main()
{circle c(2, 5, 3);point p(4, 4);//求点和圆的位置关系//点在圆内点在圆上点在员外//只需要将半径和这俩点之间的关系比较即可relation(c,p);
}
咋说呢,你要想用哪个类,你就把这个类写到前面
可以把一个类型为某类的变量定义为另一个类的变量
圆心就是一个点,因此可以将园中的圆心定义为点的类型
(6)我就要把这个类放在不同文件里的知识单独拎出来
把类的声明放在头文件中使用.h文件;类中文件的实现放在cpp中重新起一个cpp文件,这个文件要用声明的头文件;在main函数里面想要使用类,就在前面加上声明的头文件
分别如何书写呢?
例如circle文件:
在头文件里写一个.h文件,然后把类复制进去,去掉函数实现,留下成员变量和成员函数的声明;
然后再源文件里另写一个cpp文件,这个文件写下来类内各个函数的具体实现就好了
这下:函数的声明函数的实现就都分得很清了
2.函数的初始化和销毁
1.构造函数和析构函数都是只要创建了对象,这个函数就会被自动调用,就算你不写,系统会自动给你写一个空的构造函数然后一调用,但是你要是写了就用你的,即便你不调用这个函数,他也会自动调用你写的
2.你要是在函数体内(不是main),那么就会放在站上,这个函数用完就要析构销毁