在学习c++基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。
04-c++day03
一、类和对象
1、面向对象程序设计案例
练习1:设计立方体类(Cube)
求出立方体的面积( 2*a*b + 2*a*c + 2*b*c )和体积( a * b * c),分别用全局函数和成员函数判断两个立方体是否相等。
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<iostream> 3 using namespace std; 4 5 /* 6 设计立方体类(Cube), 7 求出立方体的面积( 2*a*b + 2*a*c + 2*b*c )和体积( a * b * c), 8 分别用全局函数和成员函数判断两个立方体是否相等。 9 */ 10 11 class Cube 12 { 13 public: 14 15 //设置长 16 void setL(int l) 17 { 18 m_L = l; 19 } 20 //获取长 21 int getL() 22 { 23 return m_L; 24 } 25 //设置宽 26 void setW(int w) 27 { 28 m_W = w; 29 } 30 //获取宽 31 int getW() 32 { 33 return m_W; 34 } 35 //设置高 36 void setH(int h) 37 { 38 m_H = l; 39 } 40 //获取高 41 int getH() 42 { 43 return m_H; 44 } 45 46 //求立方体的面积 47 void getCubeS() 48 { 49 cout << "立方体的面积:" << 2* m_L * m_W + 2 m_L * m_H + 2 m_W * m_H << endl; 50 } 51 //求立方体的体积 52 void getCubeV() 53 { 54 cout << "立方体的体积:" << m_L * m_W * m_H << endl; 55 } 56 57 //通过成员函数判断是否相等 58 bool compareCubeByClass(Cube &cub1, Cube &cub2) 59 { 60 if(cub1.getL() == cub2.getL() && cub1.getW() == cub2.getW() && cub1.getH() == cub2.getH() ) 61 { 62 return true; 63 } 64 return false; 65 } 66 67 private: 68 int m_L;//长 69 int m_W;//宽 70 int m_H;//高 71 } 72 73 //全局函数判断 两个立方体是否相等 74 bool compareCube(Cube &cub) 75 { 76 bool ret = m_L == cub.getL() && m_W == cub.getW() && m_H == cub.getH(); 77 return ret; 78 } 79 80 void test01() 81 { 82 Cube c1; 83 c1.setL(10); 84 c1.setW(10); 85 c1.setH(10); 86 87 c1.getCubeS(); 88 c1.getCubeV(); 89 90 //通过全局函数判断两个立方体是否相等 91 92 Cube c2; 93 c2.setL(10); 94 c2.setW(10); 95 c2.setH(10); 96 97 bool ret = compareCube(c1, c2); 98 if(ret) 99 { 100 cout << "c1和c2是相等的!" << endl; 101 } 102 else 103 { 104 cout << "c1和c2是不相等的!" << endl; 105 } 106 107 //通过成员函数判断是否相等 108 bool ret2 = c1.compareCubeByClass(c2); 109 if(ret2) 110 { 111 cout << "c1和c2是相等的!" << endl; 112 } 113 else 114 { 115 cout << "c1和c2是不相等的!" << endl; 116 } 117 } 118 119 int main() 120 { 121 test01(); 122 123 system("pause"); 124 return EXIT_SUCCESS; 125 }
为什么const刚刚不能添加?没法保证成员函数里是否修改了成员属性
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<iostream> 3 using namespace std; 4 5 /* 6 设计立方体类(Cube), 7 求出立方体的面积( 2*a*b + 2*a*c + 2*b*c )和体积( a * b * c), 8 分别用全局函数和成员函数判断两个立方体是否相等。 9 */ 10 11 class Cube 12 { 13 public: 14 15 //设置长 16 void setL(int l) 17 { 18 m_L = l; 19 } 20 //获取长 21 int getL() const 22 { 23 return m_L; 24 } 25 //设置宽 26 void setW(int w) 27 { 28 m_W = w; 29 } 30 //获取宽 31 int getW() 32 { 33 return m_W; 34 } 35 //设置高 36 void setH(int h) 37 { 38 m_H = l; 39 } 40 //获取高 41 int getH() 42 { 43 return m_H; 44 } 45 46 //求立方体的面积 47 void getCubeS() 48 { 49 cout << "立方体的面积:" << 2* m_L * m_W + 2 m_L * m_H + 2 m_W * m_H << endl; 50 } 51 //求立方体的体积 52 void getCubeV() 53 { 54 cout << "立方体的体积:" << m_L * m_W * m_H << endl; 55 } 56 57 //通过成员函数判断是否相等 58 bool compareCubeByClass(Cube &cub1, Cube &cub2) 59 { 60 if(cub1.getL() == cub2.getL() && cub1.getW() == cub2.getW() && cub1.getH() == cub2.getH() ) 61 { 62 return true; 63 } 64 return false; 65 } 66 67 private: 68 int m_L;//长 69 int m_W;//宽 70 int m_H;//高 71 }; 72 73 //为什么const刚刚不能添加?没法保证成员函数里是否修改了成员属性 74 void func(const Cube &cub) 75 { 76 cub.getL(); 77 } 78 79 //全局函数判断 两个立方体是否相等 80 bool compareCube(Cube &cub) 81 { 82 bool ret = m_L == cub.getL() && m_W == cub.getW() && m_H == cub.getH(); 83 return ret; 84 } 85 86 void test01() 87 { 88 Cube c1; 89 c1.setL(10); 90 c1.setW(10); 91 c1.setH(10); 92 93 c1.getCubeS(); 94 c1.getCubeV(); 95 96 //通过全局函数判断两个立方体是否相等 97 98 Cube c2; 99 c2.setL(10); 100 c2.setW(10); 101 c2.setH(10); 102 103 bool ret = compareCube(c1, c2); 104 if(ret) 105 { 106 cout << "c1和c2是相等的!" << endl; 107 } 108 else 109 { 110 cout << "c1和c2是不相等的!" << endl; 111 } 112 113 //通过成员函数判断是否相等 114 bool ret2 = c1.compareCubeByClass(c2); 115 if(ret2) 116 { 117 cout << "c1和c2是相等的!" << endl; 118 } 119 else 120 { 121 cout << "c1和c2是不相等的!" << endl; 122 } 123 } 124 125 int main() 126 { 127 test01(); 128 129 system("pause"); 130 return EXIT_SUCCESS; 131 }
练习2:点和圆的关系
设计一个圆形类(AdvCircle),和一个点类(Point),计算点和圆的关系。
假如圆心坐标为x0, y0, 半径为r,点的坐标为x1, y1:
1)点在圆上:(x1-x0)*(x1-x0) + (y1-y0)*(y1-y0) == r*r
2)点在圆内:(x1-x0)*(x1-x0) + (y1-y0)*(y1-y0) < r*r
3)点在圆外:(x1-x0)*(x1-x0) + (y1-y0)*(y1-y0) > r*r
在学习c++基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。