類與對象2

在這裏插入圖片描述
上一篇我們大體瞭解了什麼是類、類與對象的關係,那麼如何定義一個類呢?
類的聲明形式

class  類名{
            public:
                     公有成員(外部接口)
           private:
                      私有成員
          protect:
                      保護成員
                      }

像public這種叫做訪問屬性;
定義時;類的屬性、數據一般定義爲private
********;對類的操作(函數)一般定義爲public
且最後以分號==;==結束。
訪問屬性的特點

private:只能由 
      1.該類中的函數、 
      2.其友元函數訪問。 不能被任何其他訪問,該類的對象也不能訪問
protected:可以被 
      1.該類中的函數、 
      2.派生類的函數、以及 
      3.其友元函數訪問。 但不能被該類的對象訪問。
 public:可以被
      1.該類中的函數、 
      2.派生類的函數、
      3.其友元函數訪問,也可以由 
      4.該類的對象訪問。

類的聲明時不能對類的成員初始化,如以下就是錯誤的演示
在這裏插入圖片描述

成員函數

定義可分爲兩種;一種是完全在類中定義,
*****************;一種是函數中說明原型,在類外給給出函數體
並在函數名錢使用類名加以限定
在類外定義函數體形式爲;

  返回類型    類名::成員函數名(參數表)
       {
            //函數體
         }

比如下面一個例子;

class Clock
{
publicvoid SetTime(int NewH,int NewM,int NemS);
  void ShowTime();          //類內聲明原型
private:
  int Hour,Minute,Second;
};
  void Clock::SetTime(int NewH,int NewM,int NemS);  //類外給出函數體
{ Hour=NewH;
  Minute= NewM;
  Second=NemS;
}
void Clock::ShowTime()
{cout<<Hour<<":"<<Minute<<":"<<Second;
}

從上面可以看出當類內函數參數是類內數據時可以省略參數,比如ShowTime()函數

對象

類可以說描述了一類問題的共同屬性和行爲;
類的對象時改類的實例或實體,即類的變量。
對象的聲明形式:

  類名    對象名;

例r如用上面定義的類,聲明對象

Clock myClock;

類中成員的訪問

在類外只能訪問public中的成員;
訪問方式;1

對象名.成員名

2。定義類指針訪問;如有一個student類;

student stud1,*p;    //定義類指針
p=&stud1;
p_>成員,(*p).成員        //指針訪問形式

3.通過對象的引用訪問對象中成員

stdent stud1;
student &stud2=stud1;
cout<<stud2.成員

程序一;輸入時分秒

#include <iostream>
using namespace std;
class Time
{public:
 int hour;
 int minute;
 int sec;              //類中僅有數據無函數
 };
 int main()
 {Time t1;
 cin>>t1.hour;
 cin>>t1.minute;
 cin>>t1.sec;
 cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;
 }

在這裏插入圖片描述

用函數輸入輸出時分秒

。。。。。。                       //借用上面的類定義
int main()
{void set_time(Time&);                                //原型聲明
 void show_time(Time&);
 Time t1; 
 set_time(t1);           
 show_time(t1);    
  }
  void set_time(Time& t)                              //定義函數
  {cin>>t.hour;                  
  cin>>t.minute; 
  cin>>t.sec; }
  void show_time(Time& t) 
  {cout<<t.hour<<:<<t.minute<<:<<t.sec<<endl;  }
  

要想用函數改變參數(變量)的值,兩種方法;
1.指針
2.引用(上面就是用這種方法)

用類成員函數輸入輸出

因爲成員函數用的是成員數據故變量參數可以省略

#include<iostream>
using namespace std;
class Time
{ public:
   void set_time( );            
   void show_time( );                       //函數原型聲明
  private:                    
    int hour; i
    nt minute; 
    int sec;};
    void Time∷set_time( )             //類外給出函數體
    {cin>>hour;
     cin>>minute; 
     cin>>sec;}
     void Time::show_time()
     {cout<<hour<<:<<minute<<:<<sec<<endl;}
     int main()                        //主函數
     {  Time t1;              
        t1.set_time( );              //調用t1的函數成員設置時間
       t1.show_time( );          //調用t1函數 輸出時間
       return 0;
      }

類外輸入傳值給成員數據並輸出

#include<iostream>
using namespace std;

class Clock
{public:
  void SetTime(int NewH, int NewM,  int NewS); 
  void ShowTime();
private: 
   int Hour, Minute, Second; };          //定義類

void Clock::SetTime(int NewH, int NewM,int NewS)    //類外函數
{    Hour=NewH; 
  Minute=NewM; 
 Second=NewS;}
void Clock::ShowTime() 
{   cout<<Hour<<":"<<Minute<<":"<<Second;}

int main()
{ Clock  myClock,yourClock; 
int h,m,s; 
myClock.SetTime(8,30,30);     //調用myClock中的函數SetTime( ...)
myClock.ShowTime();
 cin>>h>>m>>s; 
yourClock.SetTime(h,m,s); 
yourClock.ShowTime();
}

輸出結果;
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章