类作为对象成员
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 }
道阻且长,行则将至