歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> 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.\n";  
  13.         semesHours = i;  
  14.         gpa = 3.5;  
  15.     }  
  16.     ~Student()  
  17.     {  
  18.         cout << "~Student\n";  
  19.     }  
  20. };  
  21.   
  22. class Teacher  
  23. {  
  24.     string name;  
  25. public:  
  26.     Teacher(string p)  
  27.     {  
  28.         name = p;  
  29.         cout << "constructing teacher.\n";  
  30.     }  
  31.     ~Teacher()  
  32.     {  
  33.         cout << "~Teacher\n";  
  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.\n";  
  44.         noMeetings = i;  
  45.     }  
  46.     ~TutorPair()  
  47.     {  
  48.         cout << "~TutorPair\n";  
  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.\n";  
  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  
Copyright © Linux教程網 All Rights Reserved