菜鸟的博客

纵有疾风起,人生不言弃。

导航

2023.4.29

 1 //课本习题8-5
 2 #include <iostream>
 3 #include <string>
 4 using namespace std;
 5 class Mammal
 6 {
 7 public:
 8     virtual void speak()
 9     {
10         cout<<"动物正在说话"<<endl;
11     }
12 };
13 class Dog:public Mammal
14 {
15 public:
16     void speak()
17     {
18         cout<<"dog正在说话"<<endl;
19     }
20 };
21 void test()
22 {
23     Dog d;
24     d.speak();
25     Mammal m;
26     m.speak();
27 }
28 int main()
29 {
30     test();
31     return 0;
32 }
 1 //课本习题8-6
 2 #include <iostream>
 3 #include <string>
 4 using namespace std;
 5 class Shape
 6 {
 7 public:
 8     virtual float getArea() = 0;
 9     virtual float getPerim() = 0;
10 };
11 class Rectangle:public Shape
12 {
13 public:
14     Rectangle(float L,float W)
15     {
16         l = L;
17         w = W;
18     }
19     float getArea()
20     {
21         cout<<"rectangle的面积:"<<l*w<<endl;
22         return l*w;
23     }
24     float getPerim()
25     {
26         cout<<"rectangle的周长:"<<(l+w)*2<<endl;
27         return (l+w)*2;
28     }
29 protected:
30     float l;
31     float w;
32 };
33 class Circle:public Shape
34 {
35 public:
36     Circle(float R)
37     {
38         r = R;
39     }
40     float getArea()
41     {
42         cout<<"circle的面积:"<<3.14*r<<endl;
43         return 3.14*r;
44     }
45     float getPerim()
46     {
47         cout<<"circle的周长:"<<2*3.14*r<<endl;
48         return 2*3.14*r;
49     }
50 protected:
51     float r;
52 };
53 void test()
54 {
55     Rectangle r(2,3);
56     Circle c(5);
57     r.getArea();
58     r.getPerim();
59     c.getArea();
60     c.getPerim();
61 }
62 int main()
63 {
64     test();
65     return 0;
66 }
 1 //课本习题8-7
 2 //运行失败
 3 #include <iostream>
 4 using namespace std;
 5 class Point
 6 {
 7     friend ostream& operator<<(ostream &cout,Point p);
 8 public:
 9     Point()
10     {
11         m_Num = 0;
12     }
13     //前置++
14     Point& operator++()
15     {
16         m_Num++;
17         return *this;
18     }
19     //后置++
20     Point operator++(int)
21     {
22         Point temp = *this;
23         m_Num++;
24         return temp;
25     }
26     //前置--
27     Point& operator--()
28     {
29         m_Num--;
30         return *this;
31     }
32     //后置--
33     Point operator--(int)
34     {
35         Point temp = *this;
36         m_Num--;
37         return temp;
38     }
39 private:
40     int m_Num;
41 };
42 ostream& operator<<(ostream& cout,Point p)
43 {
44     cout<<p;
45     return cout;
46 }
47 void test()
48 {
49     Point a;
50     cout<<"a++ = "<<a++<<endl;
51     cout<<"++a = "<<++a<<endl;
52 }
53 int main()
54 {
55     test();
56     return 0;
57 }

 

posted on 2023-04-29 18:50  hhmzd233  阅读(9)  评论(0编辑  收藏  举报