C++コンストラクション関数とコンストラクション関数の解析


オブジェクトを作成する場合、データ・メンバーに初期値を割り当てるなど、初期化された作業が必要になることがよくあります.
クラスのデータ・メンバーは、クラスを宣言するときに初期化できません.クラス内のすべてのメンバーが共通である場合、オブジェクトを定義するときにデータ・メンバーを初期化できます.次のようになります.
  1. class Time
  2. { public : // hour; minute; sec; }; Time t1={14,56,30}; // t1 14:56:30 , , 。 , , private protected , 。

    C++ ) ( 8.3 set_time )。 8.3 , set_time 。 , , , 。

    ,C++ (constructor) , , , 。

    , , 。 , 。 , 。

    【 9.1】 8.3 。
     
         
    1. #include
    2. using namespace std;
    3. class Time
    4. {
    5. public :
    6. Time( )
    7. {
    8. hour=0;
    9. minute=0;
    10. sec=0;
    11. }
    12. void set_time( );
    13. void show_time( );
    14. private :
    15. int hour;
    16. int minute;
    17. int sec;
    18. };
    19. void Time::set_time( )
    20. {
    21. cin>>hour;
    22. cin>>minute;
    23. cin>>sec;
    24. }
    25. void Time::show_time( )
    26. {
    27. cout<<hour<<":"<<minute<<":"<<sec<<endl;
    28. }
    29. int main( )
    30. {
    31. Time t1;
    32. t1.set_time( );
    33. t1.show_time( );
    34. Time t2;
    35. t2.show_time( );
    36. return 0;
    37. }

    10 25 54↙  ( t1 )
    10:25:54    ( t1 、 、 ) 
    0:0:0   ( t2 、 、 )

    Time, 。 , 0。 ( ), , , 。

    , 。 4~7 :
        Time( ); //
    1. Time::Time( ) // , Time “::”
    2. { hour=0; minute=0; sec=0; }
      , :
      1. , , 。
      2. , 。
      3. , 。 , 。
      4. , C++ , , , 。

      (destructor) , , “~” 。


      C++ “~” , , 。 , 。

      , :
      1. ( ), , , 。
      2. static , , main exit , static 。
      3. , ( main exit ) , 。
      4. new , delete , 。

      , , 。 , , , 。

      : , , 。 。 , 。

      , , “ ”, 。 , , 。 , 。

      , , “ ” 。 ,C++ , , 。 , 。

      【 9.5】 C++ 。
       
           
      1. #include
      2. #include
      3. using namespace std;
      4. class Student // Student
      5. {
      6.    public :
      7.    Student(int n,string nam,char s ) //
      8.    {
      9.       num=n;
      10.       name=nam;
      11.       sex=s;
      12.       cout<<"Constructor called."<<endl; //
      13.    }
      14.    ~Student( ) //
      15.    {
      16.       cout<<"Destructor called. The num is "<<num<<"."<<endl;
      17.    } //
      18.    void display( ) //
      19.    {
      20.       cout<<"num: "<<num<<endl;
      21.       cout<<"name: "<<name<<endl;
      22.       cout<<"sex: "<<sex<<endl<<endl;
      23.    }
      24.    private :
      25.    int num;
      26.    string name;
      27.    char sex;
      28. };
      29. int main( )
      30. {
      31.    Student stud1(10010,"Wang_li",'f'); // stud1
      32.    stud1.display( ); // 1
      33.    Student stud2(10011,"Zhang_fun",'m'); // stud2
      34.    stud2.display( ); // 2
      35.    return 0;
      36. }

      プログラムの は のとおりです.
      Constructor called. (stud 1のコンストラクタを )
      num:10010(stud 1のdisplay を )
      name:Wang_li
      sex: f
      Constructor called. (stud 2のコンストラクタを )
      num:10011(stud 2のdisplay を )
      name:Zhang_fun
      sex:m
      Destructor called. The num is 10011. (stud 2の を )
      Destructor called. The num is 10010. (stud 1の を )