类作为对象成员

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 //汽车类
 5 class Car
 6 {
 7 public:
 8     Car();
 9     Car(string name)
10     {
11         cout << "Car带参构造函数" << endl;
12         mName = name;
13     }
14     ~Car();
15 
16 public:
17     string mName;
18 };
19 
20 Car::Car()
21 {
22     cout << "Car默认构造函数" << endl;
23     mName = "特斯拉";
24 }
25 
26 Car::~Car()
27 {
28     cout << "Car析构函数" << endl;
29 }
30 //拖拉机
31 class Tractor
32 {
33 public:
34     Tractor()
35     {
36         cout << "Tractor默认构造函数" << endl;
37         mName = "丰田拖拉机";
38     }
39     Tractor(string name)
40     {
41         cout << "Tractor带参数构造函数" << endl;
42         mName = name;
43     }
44     ~Tractor()
45     {
46         cout << "Tractor析构函数" << endl;
47     }
48 public:
49     string mName;
50 };
51 //人类
52 class Person
53 {
54 public:
55 #if 0
56     //类mCar不存早合适的构造函数
57     Person(string name)
58     {
59         mName = name;
60     }
61 #else
62     //初始化列表可以指定调用构造函数
63     Person(string carName, string tracName, string name) :mTractor(tracName), mCar(carName), mName(name)
64     {
65         cout << "Person构造函数" << endl;
66     }
67 #endif
68     void GoWorkByCar()
69     {
70         cout << mName << "开着" << mCar.mName << "去上班" << endl;
71     }
72     void GoWorkByTractor()
73     {
74         cout << mName << "开着" << mTractor.mName << "去上班" << endl;
75     }
76     ~Person()
77     {
78         cout << "Person 析构函数" << endl;
79     }
80 private:
81     string mName;
82     Car mCar;
83     Tractor mTractor;
84 };
85 int main()
86 {
87     //Person person("张三");
88     Person person("宝马", "奔驰拖拉机", "赵四");
89     person.GoWorkByCar();
90     person.GoWorkByTractor();
91 }

 

posted @ 2021-03-13 18:14  丁帅帅dss  阅读(88)  评论(0)    收藏  举报