赞
踩
目录
1.2封装的意义二--将属性和行为加以控制,公共权限,保护权限,私有权限
- #include<iostream>
- using namespace std;
-
- const double PI = 3.14;
-
- //设计圆类,求圆的周长
- //圆求周长的公式:2*PI*半径
-
- //class达标设计一个类,类后面紧跟着的就是类名
- class Circle
- {
- //访问权限
- //公共权限,不管是在类内还是类外都可以访问
- public:
-
- //属性,通常是一些变量
- int m_r;//半径
-
- //行为,在代码中通常用函数去代表它
- //获取圆的周长
- double calculateZC()
- {
- return 2 * PI * m_r;
- }
-
- };
- int main()
- {
- //通过圆类 创建具体的圆,具体的圆我们称为对象
- //实例化(通过一个类 创建一个对象的过程称为实例化)
- Circle c1;
- //给圆对象的属性进行赋值
- c1.m_r = 10;
- cout << "圆的周长为:" << c1.calculateZC() << endl;
-
- //将半径和求周长封装在一起
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- const double PI = 3.14;
-
- //设计学生类
- class Student
- {
- //类中的属性和行为 我们统一称为 成员
- //属性也称为成员属性,成员变量
- //行为也称为成员函数 成员方法
-
-
- //公共权限
- public:
-
- //属性,通常是一些变量
- string name;
- int number;
-
- //行为,在代码中通常用函数去代表它
- //显示姓名和学号
- void showStudent()
- {
- cout <<"姓名:"<< name << " "
- <<"学号:"<< number << endl;
- }
-
- //可以通过行为给属性赋值
- //给姓名赋值
- void setName(string m_name)
- {
- name = m_name;
- }
- //给学号赋值
- void setNumber(int m_number)
- {
- number = m_number;
- }
- };
- int main()
- {
- //创建一个具体学生 实例化(通过一个类 创建对象的过程)对象
- Student s;
- //给s对象 进行属性赋值操作
- s.name = "张三";
- s.number = 201640;
- s.showStudent();
-
- Student s1;
- s1.setName("李四");
- s1.setNumber(2017022);
- s1.showStudent();
-
-
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- //访问权限
- //公共权限 public 成员类内可以访问,类外也可以访问
- //保护权限 protected 成员类内可以访问,类外不可以访问 儿子可以访问父亲中的保护内容
- //私有权限 private 成员类内可以访问,类外不可以访问 儿子不可以访问父亲中的私有内容
-
- class person
- {
- //公共权限
- public:
- string m_Name;//姓名
-
- //保护权限
- protected:
- string m_Car;//汽车
-
- //私有权限
- private:
- int m_Password;//银行卡密码
-
- private:
- void func()
- {
- m_Name = "张三";
- m_Car = "拖拉机";
- m_Password = 123456;
- }
- };
-
- int main()
- {
- //实例化具体对象
- person p1;
- p1.m_Name = "李四";
- //p1.m_car = "奔驰";//保护权限的内容,在类外访问不到
- //p1.m_Password = 123;//私有权限的内容,在类外访问不到
- //p1.func();私有权限的内容,在类外访问不到
-
-
-
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- class C1
- {
- //默认权限就是public啥的都没写
- int m_A;//默认权限是私有
- };
-
- struct C2
- {
- int m_A;//默认权限 是公告
- };
- int main()
- {
- //struct和class的区别
- //struct 默认权限是 公共 public
- //class 默认权限是 私有 private
-
- C1 c1;
- //c1.m_A = 100;//报错
-
- C2 c2;
- c2.m_A = 100;//在struct中默认权限为公共,可以访问
-
-
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- //成员属性设置为私有
- //1、可以控制读写权限
- //2、对于写可以检测数据的有效性
-
- class Person
- {
- public:
- //设置姓名
- void setName(string name)
- {
- m_Name = name;//对外提供一个公共的成员函数,来侧面给它的成员属性进行赋值操作
- }
- //获取姓名
- string getName()
- {
- return m_Name;
- }
- //获取年龄,只读
- int getAge()
- {
- m_Age = 0;//初始化为0岁
- return m_Age;
- }
- //设置情人 只写
- void setLover(string lover)
- {
- m_Lover = lover;
- }
- private:
- //姓名 可读可写
- string m_Name;
- //年龄 只读
- int m_Age;
- //情人 只写
- string m_Lover;
- };
- int main()
- {
- Person p;
- p.setName("张三");
- cout << "姓名为:" << p.getName() << endl;
-
- //p.m_Age = 18;//只读
- //p.setAge(18);//只读
- cout << "年龄为:" << p.getAge() << endl;
-
- //设置情人为苍井女士
- p.setLover("苍井");
- //cout << "情人为:" << p.m_Lover << endl;
- //cout << "情人为:" << p.getLover() << endl;
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- //成员属性设置为私有
- //1、可以控制读写权限
- //2、对于写可以检测数据的有效性
-
- class Person
- {
- public:
- //设置姓名
- void setName(string name)
- {
- m_Name = name;//对外提供一个公共的成员函数,来侧面给它的成员属性进行赋值操作
- }
- //获取姓名
- string getName()
- {
- return m_Name;
- }
- //获取年龄,可读可写,如果想修改(年龄的范围必须是0-150之间)
- int getAge()
- {
- return m_Age;
- }
- //设置年龄
- void setAge(int age)
- {
- if (age < 0 || age>150)
- {
- cout << "年龄有误" << endl;
- m_Age = 0;
- }
- else
- {
- m_Age = age;
- }
- /*还可以这样写
- if (age < 0 || age>150)
- {
- cout << "年龄有误" << endl;
- m_Age = 0;
- return;
- }
- m_Age = age;
- */
- }
- //设置情人 只写
- void setLover(string lover)
- {
- m_Lover = lover;
- }
- private:
- //姓名 可读可写
- string m_Name;
- //年龄 只读
- int m_Age;
- //情人 只写
- string m_Lover;
- };
- int main()
- {
- Person p;
- p.setName("张三");
- cout << "姓名为:" << p.getName() << endl;
-
- p.setAge(18);
- cout << "年龄为:" << p.getAge() << endl;
-
- //设置情人为苍井女士
- p.setLover("苍井");
- //cout << "情人为:" << p.m_Lover << endl;
- //cout << "情人为:" << p.getLover() << endl;
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- //立方体类
- class Cube
- {
- public:
- void setL(double l)//设置长
- {
- m_L = l;
- }
- double getL()//获取长
- {
- return m_L ;
- }
- void setW(double w)
- {
- m_W = w;
- }
- double getW()
- {
- return m_W;
- }
- void setH(double h)
- {
- m_H = h;
- }
- double getH()
- {
- return m_H;
- }
- double getS()//返回面积
- {
- return 2 * m_L * m_W + 2 * m_L * m_H + 2 * m_H * m_W;
- }
- double getV()//返回面积
- {
- return m_L * m_W * m_H;
- }
- //利用成员函数判断是否相等
- /*void judge(double l, double w, double h)
- {
- if (m_L == l && m_W == w && m_H == h)
- {
- cout << "相等" << endl;
- }
- else
- {
- cout << "不相等" << endl;
- }
- }*/
- bool isSamebyClass(Cube &c)//成员函数传一个就好,会用已知到去调用这个函数,传入一个未知的
- {
- if (m_L == c.getL() && m_W == c.getW() && m_H == c.getH())
- {
- return true;
- }
- return false;
- }
- private:
- double m_L, m_W, m_H;
- };
-
- //利用全局函数判断是否相等
- /*void Qjudge(double a1, double a2, double a3, double b1, double b2, double b3)
- {
- if (a1 == b1 && a2 == b2 && a3 == b3)
- {
- cout << "相等" << endl;
- }
- else
- {
- cout << "不相等" << endl;
- }
- }*/
- 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, c2;
- c1.setL(10);
- c1.setW(10);
- c1.setH(10);
- c2.setL(20);
- c2.setW(20);
- c2.setH(20);
- cout << "c1面积" << c1.getS() << endl;
- cout << "c1体积:" << c1.getV() << endl;
- //利用成员函数判断
- //c1.judge(c2.getL(), c2.getW(), c2.getH());
- //利用全局函数判断
- //Qjudge(c1.getL(), c1.getW(), c1.getH(), c2.getL(), c2.getW(), c2.getH());
-
-
- //利用全局函数判断
- bool ret = isSame(c1, c2);
- if (ret)
- {
- cout << "c1、c2相等" << endl;
- }
- else
- {
- cout << "c1、c2不相等" << endl;
-
- }
- //利用成员函数判断
- bool ret1 = c1.isSamebyClass(c2);
- if (ret1)
- {
- cout << "c1、c2相等" << endl;
- }
- else
- {
- cout << "c1、c2不相等" << endl;
-
- }
- system("pause");//按任意键继续
- return 0;
- }

- #include<iostream>
- using namespace std;
-
- //点类
- class Point
- {
- public:
- //设置x
- void setX(double x)
- {
- m_X = x;
- }
- //获取x
- double getX()
- {
- return m_X;
- }
- //设置y
- void setY(double y)
- {
- m_Y = y;
- }
- //获取y
- double getY()
- {
- return m_Y;
- }
- private:
- double m_X;
- double m_Y;
- };
- //圆类
- class Circle
- {
- public:
- //设置半径
- void setR(double r)
- {
- m_R = r;
- }
- //获取半径
- double getR()
- {
- return m_R;
- }
- //设置圆心
- void setC(Point center)
- {
- m_Center = center;
- }
- //获取圆心
- Point getC()
- {
- return m_Center;
- }
- private:
- double m_R;
-
- //在类中可以让另一个类 作为本类中的成员
- Point m_Center;
- };
-
- //判断点和圆之间的位置关系
- void isInCircle(Circle &c, Point &p)
- {
- //计算两点之间距离的平方
- double distance= (p.getX() - c.getC().getX())* (p.getX() - c.getC().getX())
- + (p.getY() - c.getC().getY()) * (p.getY() - c.getC().getY());
- //计算半径的平方
- double 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 cp;
- cp.setX(10);
- cp.setY(0);
- c.setC(cp);
- //创建点
- Point p1,p2,p3;
- p1.setX(10);
- p1.setY(9);
- p2.setX(10);
- p2.setY(10);
- p3.setX(10);
- p3.setY(11);
- isInCircle(c, p1);
- isInCircle(c, p2);
- isInCircle(c, p3);
- system("pause");//按任意键继续
- return 0;
- }

- /*point.h代码
- #pragma once//防止头文件重复包含
- //在头文件中声明
- #include<iostream>
- using namespace std;
- //把成员函数和属性声明
- class Point
- {
- public:
- void setX(double x);
- //获取x
- double getX();
- //设置y
- void setY(double y);
- //获取y
- double getY();
- private:
- double m_X;
- double m_Y;
- };
- */
- /*c.h代码
- #pragma once//防止头文件重复包含
- #include<iostream>
- using namespace std;
- #include"point.h"
- class Circle
- {
- public:
- //设置半径
- void setR(double r);
- //获取半径
- double getR();
- //设置圆心
- void setC(Point center);
- //获取圆心
- Point getC();//将point头文件加进来,让它知道有这么一个类
- private:
- double m_R;
- //在类中可以让另一个类 作为本类中的成员
- Point m_Center;
- };
- */
- /*circle.cpp代码
- #include"c.h"
- //在头文件中写声明,在cpp中写实现
- //设置半径
- void Circle::setR(double r)
- {
- m_R = r;
- }
- //获取半径
- double Circle::getR()
- {
- return m_R;
- }
- //设置圆心
- void Circle::setC(Point center)
- {
- m_Center = center;
- }
- //获取圆心
- Point Circle::getC()
- {
- return m_Center;
- }
- */
- /*P.cpp代码
- #include"point.h"
- //只需要留函数的所有实现
- //如果只写setX他是全局函数,
- // 但我们知道它是一个成员函数
- // 需要告诉他是哪个作用域下的
- //设置x
- void Point::setX(double x)//Point作用域下的成员函数
- {
- m_X = x;
- }
- //获取x
- double Point::getX()
- {
- return m_X;
- }
- //设置y
- void Point::setY(double y)
- {
- m_Y = y;
- }
- //获取y
- double Point::getY()
- {
- return m_Y;
- }
- */
- #include<iostream>
- using namespace std;
- #include"point.h"
- #include"c.h"
- //判断点和圆之间的位置关系
- void isInCircle(Circle &c, Point &p)
- {
- //计算两点之间距离的平方
- double distance= (p.getX() - c.getC().getX())* (p.getX() - c.getC().getX())
- + (p.getY() - c.getC().getY()) * (p.getY() - c.getC().getY());
- //计算半径的平方
- double 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 cp;
- cp.setX(10);
- cp.setY(0);
- c.setC(cp);
- //创建点
- Point p1,p2,p3;
- p1.setX(10);
- p1.setY(9);
- p2.setX(10);
- p2.setY(10);
- p3.setX(10);
- p3.setY(11);
- isInCircle(c, p1);
- isInCircle(c, p2);
- isInCircle(c, p3);
- system("pause");//按任意键继续
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。