海口网站建设是什么意思,浏览器下载,搭建网站需要学什么软件,东莞大岭山建网站公司1.封装的意义 封装是C面向对象三大特性之一 实例化#xff08;通过一个类 创建一个对象的过程#xff09; 类中的属性和行为 我们统一称为 成员 属性 成员属性 成员变量 行为 成员函数 成员方法 封装的意义#xff1a; 1.将属性和行为作为一个整体#xff0c;表现生活中的事…1.封装的意义 封装是C面向对象三大特性之一 实例化通过一个类 创建一个对象的过程 类中的属性和行为 我们统一称为 成员 属性 成员属性 成员变量 行为 成员函数 成员方法 封装的意义 1.将属性和行为作为一个整体表现生活中的事物 2.将属性和行为加以权限控制 封装意义一在设计类的时候属性和行为写在一起表现事物 语法 class 类名 { 访问权限 属性 / 行为 }; 示例1设计一个圆类求圆的周长 #include iostream
using namespace std;
#includestring//圆周率
const double PI 3.14;//设计一个圆类求圆的周长
//圆求周长的公式2* PI * 半径
//class 代表设计一个类类后面紧跟着的就是类名称
class yuan
{//访问权限 公共权限public://属性 半径int r;//行为 获取圆的周长double zhouchang(){return 2 * PI * r;}
};
int main()
{//通过圆类 创建具体的圆对象yuan c1;//给圆对象的属性进行赋值c1.r 10;//2 * PI * rcout 圆的周长为 c1.zhouchang() endl;system(pause);return 0;
} 示例2设计一个学生类属性有姓名和学号可以给姓名和学号赋值可以显示学生的名 和学号 #include iostream
using namespace std;
#includestringclass student
{public://公共权限//属性 string m_name;//姓名int m_id;//学号//行为 显示姓名和学号void showstudent(){cout 姓名 m_name 学号 m_id endl;}//给姓名赋值void setName(string name){m_name name;}//给学号赋值void setID(int id){m_id id;}
};
int main()
{//创建一个具体的学生 实例化对象student s1;//给s1对象 进行属性赋值操作s1.setName(祁同伟);s1.setID (10001);s1.showstudent();//显示学生信息system(pause);return 0;
} 封装意义二类在设计时可以把属性和行为放在不同的权限下加以控制 访问权限有三种1.public 公共权限 2.protected 保护权限 3.private 私有权限 #include iostream
using namespace std;
#includestring
//三种权限
//公共权限 public 类内可以访问 类外可以访问
//保护权限 protected 类内可以访问 类外不可以访问
//私有权限 private 类内可以访问 类外不可以访问class Person
{//姓名 公共权限
public:string m_Name;//汽车 保护权限
protected:string m_Car;//银行卡密码 私有权限
private:int m_Password;public:void func(){m_Name 张三;m_Car 拖拉机;m_Password 123456;}
};int main()
{Person p;p.m_Name 李四;//p.m_Car 奔驰;//保护权限类外访问不到//p.m_Password 123;//私有权限类外访问不到system(pause);return 0;
}2. struct和class区别 在C中struct和class唯一的区别就在于默认的访问权限不同 区别 struct 默认权限为公共 class 默认权限为私有 class C1
{int m_A; //默认是私有权限
};struct C2
{int m_A; //默认是公共权限
};int main()
{C1 c1;c1.m_A 10; //错误访问权限是私有C2 c2;c2.m_A 10; //正确访问权限是公共system(pause);return 0;
} 3. 成员属性设置为私有 优点1将所有成员属性设置为私有可以自己控制读写权限 优点2对于写权限我们可以检测数据的有效性 #include iostream
using namespace std;
#includestring
//成员属性设置私有
//1、可以自己控制读写权限
//2、对于写可以检测数据有效性
//人类
class Person
{
public://设置姓名void setName(string name){m_Name name;}//获取姓名string getName(){return m_Name;}//获取年龄 只读 getint getAge(){return m_Age;}//设置年龄 只写 setvoid setAge(int age){if (age 0 || age100){cout 年龄输入有误赋值失败 endl;return;}m_Age age;}//设置偶像 只写 setvoid setIdol(string idol){m_Idol idol;}private:string m_Name; //姓名 可读可写int m_Age 18; //年龄 只读string m_Idol; //偶像 只写
};int main()
{Person p;//姓名设置p.setName(张三);//获取姓名cout 姓名 p.getName() endl;//年龄设置p.setAge(30); //获取年龄cout 年龄 p.getAge() endl;//偶像设置p.setIdol(迪丽热巴); //只写//cout 偶像 p.getIdoi() endl;//只写状态 外界访问不到system(pause);return 0;
} 4.案例
4.1 立方体 设计立方体类、求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体是否相等 #includeiostream
using namespace std;//立方体类设计
//1、创建立方体类
//2、设计属性
//3、设计行为 获取立方体面积和体积
//4、分别利用全局函数和成员函数 判断两个立方体是否相等class Cube{
public://设置长void setL(int l) {m_L l;}//获取长int getL() {return m_L;}//设置宽void setW(int w) {m_W w;}//获取宽int getW() {return m_W;}//设置高void setH(int h) {m_H h;}//获取高int getH() {return m_H;}//获取立方体的面积int calculateS() {return 2 * m_L * m_W 2 * m_W * m_H 2 * m_L * m_H;}//获取立方体的体积int calculateV() {return m_L * m_W * m_H;}//利用成员函数判断两个立方体是否相等bool isSameByClass(Cube c) {if (getL() c.getL() getW() c.getW() getH() c.getH()) {return true;}return false;}private:int m_L;//长int m_W;//宽int m_H;//高
};//利用全局函数判断 两个立方体是否相等
bool isSame(Cube c1, Cube c2) {if (c1.getL() c2.getL() c1.getW() c2.getW() c1.getH() c2.getH()) {return true;}return false;
}int main(){//创建立方体对象Cube c1;c1.setL(10);c1.setW(10);c1.setH(10);cout c1的面积为 c1.calculateS() endl;cout c1的体积为 c1.calculateV() endl;//创建第二个立方体Cube c2;c2.setL(10);c2.setW(10);c2.setH(10);//利用全局函数判断bool ret isSame(c1, c2);if (ret) {cout 全局函数判断c1和c2是相等的 endl;}else {cout 全局函数判断c1和c2是不相等的 endl;}//利用成员函数判断ret c1.isSameByClass(c2);if (ret) {cout 成员函数判断c1和c2是相等的 endl;}else {cout 成员函数判断c1和c2是不相等的 endl;}system(pause);return 0;
} 4.2 点和圆的关系 设计一个圆形类Circle和一个点类Point计算点和圆的关系。 #includeiostream
using namespace std;//点类
class Point {
public://设置xvoid setX(int x) {m_X x;}//获取xint getX() {return m_X;}//设置yvoid setY(int y) {m_Y y;}//获取yint getY() {return m_Y;}
private:int m_X;int m_Y;
};//圆类
class Circle {
public://设置半径void setR(int r) {m_R r;}//获取半径int getR() {return m_R;}//设置圆心void setCenter(Point center) {m_Center center;}//获取圆心Point getCenter(){return m_Center;}private:int m_R;//半径//在类中可以让另一个类 作为本来中的成员Point m_Center;//圆心
};//判断点和圆关系
void isInCircle(Circle c, Point p) {//计算两点之间距离 平方int distance (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());//计算半径的平方int rDistance c.getR() * c.getR();//判断关系if (distance rDistance) {cout 点在圆上 endl;}else if (distance rDistance) {cout 点在圆外 endl;}else {cout 点在圆内 endl;}
}
int main(){//创建圆Circle c;c.setR(10);Point center;center.setX(10);center.setY(0);c.setCenter(center);//创建点Point p;p.setX(10);p.setY(10);//判断关系isInCircle(c, p);system(pause);return 0;
} 在实际开发当中不可能把全部类写到一个文件中所以要分开几个文件写poipoint.h #pragma once //防止头文件出现重复性
#include iostream
using namespace std;class Point {
public://函数声明//设置xvoid setX(int x);//获取xint getX();//设置yvoid setY(int y);//获取yint getY();private://变量声明int m_X;int m_Y;
};point.cpp #includepoint.h//设置xvoid Point:: setX(int x) { //加Point::使其变成成员函数m_X x;}//获取xint Point:: getX() {return m_X;}//设置yvoid Point:: setY(int y) {m_Y y;}//获取yint Point:: getY() {return m_Y;} circle.h #pragma once
#includeiostream
using namespace std;
#includepoint.hclass Circle {
public://设置半径void setR(int r); //获取半径int getR();//设置圆心void setCenter(Point center);//获取圆心Point getCenter();private:int m_R;//半径//在类中可以让另一个类 作为本来中的成员Point m_Center;//圆心
};circle.cpp #includecircle.h//设置半径void Circle:: setR(int r) {m_R r;}//获取半径int Circle:: getR() {return m_R;}//设置圆心void Circle:: setCenter(Point center) {m_Center center;}//获取圆心Point Circle:: getCenter(){return m_Center;}