C++Note 封装 案例 (立方体相等)(点和圆)
案例1
1 #include <iostream> 2 using namespace std; 3 4 //设计立方体类(Cube) 5 //求出立方体的面积和体积 6 //分别用全局函数和成员函数判断两个立方体是否相等 7 class Cube 8 { 9 private: 10 //属性 11 int m_L;//立方体的长度 12 int m_W;//立方体的宽度 13 int m_H;//立方体的高度 14 public: 15 void setL(int l)//设置长 16 { 17 m_L = l; 18 } 19 int getL()//获取长 20 { 21 return m_L; 22 } 23 void setW(int w)//设置宽 24 { 25 m_W = w; 26 } 27 int getW()//获取宽 28 { 29 return m_W; 30 } 31 void setH(int h)//设置高 32 { 33 m_H = h; 34 } 35 int getH()//获取高 36 { 37 return m_H; 38 } 39 int getArea()//获取面积 40 { 41 return 2 * (m_H * m_L + m_H * m_W + m_W * m_L); 42 } 43 int getVolume()//获取体积 44 { 45 return m_L * m_W * m_H; 46 } 47 //利用成员函数判断两个立方体是否相等 48 bool isSameByCLass(Cube &c) 49 { 50 if (m_H == c.getH() && m_L == c.getL() && m_W == c.getW()) 51 return true; 52 else 53 return false; 54 } 55 }; 56 //利用全局函数判断 57 bool isSame(Cube &c1, Cube &c2) 58 { 59 if (c1.getH() == c2.getH() && c1.getL() == c2.getL() && c1.getW() == c2.getW()) 60 return true; 61 else 62 return false; 63 } 64 65 int main() 66 { 67 Cube c1,c2; 68 c1.setL(10); 69 c1.setW(10); 70 c1.setH(10); 71 c2.setL(10); 72 c2.setW(10); 73 c2.setH(10); 74 cout << "c1的面积:" << c1.getArea() << endl; 75 cout << "c1的体积:" << c1.getVolume() << endl; 76 //全局函数判断 77 bool ret = isSame(c1, c2); 78 if (ret) 79 cout << "全局函数判断c1和c2是相等的" << endl; 80 else 81 cout << "全局函数判断c1和c2是不相等的" << endl; 82 //成员函数判断 83 bool ret1 = c1.isSameByCLass(c2); 84 if (ret1) 85 cout << "成员函数判断c1和c2是相等的" << endl; 86 else 87 cout << "成员函数判断c1和c2是不相等的" << endl; 88 system("pause"); 89 return 0; 90 }
案例2:
1 #include <iostream> 2 using namespace std; 3 4 //设计一个圆类 Circle 和一个点类 Point 计算点和圆的关系 5 //1.点在圆外 2.点在圆上 3.点在圆内 6 class Point//点类 7 { 8 private: 9 int p_X;//点坐标x 10 int p_Y;//点坐标y 11 public: 12 void setX(int x)//写入点x 13 { 14 p_X = x; 15 } 16 int getX()//读取点x 17 { 18 return p_X; 19 } 20 void setY(int y)//写入点y 21 { 22 p_Y = y; 23 } 24 int getY()//读取点y 25 { 26 return p_Y; 27 } 28 }; 29 class Circle//圆类 30 { 31 private: 32 Point p_Center;//圆心 33 //在类中可以让另一个类 做为本类中的成员 34 int c_R;//圆的半径 35 public: 36 void setRadius(int radius)//写入半径x 37 { 38 c_R = radius; 39 } 40 int getRadius()//读取半径y 41 { 42 return c_R; 43 } 44 void setCenter(Point center)//写入圆心 45 { 46 p_Center = center; 47 } 48 Point getCenter()//读取圆心 49 { 50 return p_Center; 51 } 52 }; 53 54 void Relation(Point &p,Circle &c) 55 { 56 int distance = pow((c.getCenter().getX() - p.getX()), 2) + pow((c.getCenter().getY() - p.getY()), 2); 57 //点到圆心距离的平方 58 int rDistance = pow(c.getRadius(), 2);//圆半径的平方 59 if (distance > rDistance) 60 cout << "点在圆外" << endl; 61 else if (distance == rDistance) 62 cout << "点在圆上" << endl; 63 else 64 cout << "点在圆内" << endl; 65 } 66 int main() 67 { 68 Point cp; 69 Circle c; 70 cp.setX(0);//圆心x 71 cp.setY(0);//圆心y 72 c.setRadius(3);//半径 73 c.setCenter(cp);//写入圆心 x y 74 Point p;//独立点 75 p.setX(3);//独立点x 76 p.setY(0);//独立点y 77 Relation(p, c);//独立点p和圆c 78 system("pause"); 79 return 0; 80 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)