Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C++中组合类的初始化:冒号语法(常数据成员和引用成员的初始化)

  1. #include <iostream>   
  2. #include<string>   
  3.   
  4. using namespace std;  
  5. class Student  
  6. {  
  7.     int semesHours;  
  8.     float gpa;  
  9. public:  
  10.     Student(int i)  
  11.     {  
  12.         cout << "constructing student. ";  
  13.         semesHours = i;  
  14.         gpa = 3.5;  
  15.     }  
  16.     ~Student()  
  17.     {  
  18.         cout << "~Student ";  
  19.     }  
  20. };  
  21.   
  22. class Teacher  
  23. {  
  24.     string name;  
  25. public:  
  26.     Teacher(string p)  
  27.     {  
  28.         name = p;  
  29.         cout << "constructing teacher. ";  
  30.     }  
  31.     ~Teacher()  
  32.     {  
  33.         cout << "~Teacher ";  
  34.     }  
  35. };  
  36.   
  37. class TutorPair  
  38. {  
  39. public:  
  40.     TutorPair(int i, int j, string p) :  
  41.         teacher(p), student(j)  
  42.     {  
  43.         cout << "constructing tutorpair. ";  
  44.         noMeetings = i;  
  45.     }  
  46.     ~TutorPair()  
  47.     {  
  48.         cout << "~TutorPair ";  
  49.     }  
  50. protected:  
  51.     Student student;  
  52.     Teacher teacher;  
  53.     int noMeetings;  
  54. };  
  55.   
  56. int main(int argc, char **argv)  
  57. {  
  58.     TutorPair tp(5, 20, "Jane");  
  59.     cout << "back in main. ";  
  60.     return 0;  
  61. }  
注意:程序里面的赋值方式,以及构造函数析构函数的调用次序。
[html]
  1. constructing student.  
  2. constructing teacher.  
  3. constructing tutorpair.  
  4. back in main.  
  5. ~TutorPair  
  6. ~Teacher  
  7. ~Student  
另外:构造函数初始化常数据成员和引用成员。[cpp]
  1. #include <iostream>   
  2. #include <string>   
  3.   
  4. using namespace std;  
  5.   
  6. class Student  
  7. {  
  8. public:  
  9.     Student(int s, int &k) :  
  10.         i(s), j(k)  
  11.     {  
  12.     } //不可以直接赋值   
  13.     void p()  
  14.     {  
  15.         cout << i << endl;  
  16.         cout << j << endl;  
  17.     }  
  18. protected:  
  19.     const int i;  
  20.     int &j;  
  21. };  
  22.   
  23. int main(int argc, char **argv)  
  24. {  
  25.     int c = 123;  
  26.     Student s(9818, c);  
  27.     s.p();  
  28.   
  29.     return 0;  
  30. }  
[cpp]
  1. 9818  
  2. 123