struct和class都是類,但class中可以加入函數。類的基本思想是數據抽象與封裝。數據抽象是一種依賴接口和實現分離編程的技術。
   數據抽象包括兩部分,包括一組數據和對這些數據的操作。Struct所定義的類中的數據都是默認爲public,即是類外的函數也可以對這些數據進行操作,而對於class定義的類,數據在沒有說明的時候默認爲私有,則若要訪問這些數據就必須通過類中的函數或則是友元函數,也可以通過將數據定義在public中,這樣定義的數據便與struct中的數據一樣,任何函數都可以進行訪問。
   爲了防止數據被他人修改,需要對數據進行加密,這就引進了訪問限定符
   Public:公有成員聲明
   此限定符下的數據都可以訪問
   Private:私有成員聲明
   只有內部函數和友元函數對其中的數據進行訪問。
   內部函數:
   定義內部函數時可以在類內部對內部函數的內容進行說明,也可以在類外進行說明,類外說明的方式: 
 Class nh{     
                        Public     
                                     Int ex();        
                };在定義完類之後一定要加;                            
                 Int nh::ex()     
                                                                    
               {                               
       函數體;                             }

友元函數:
友元函數也可以訪問類中的私有成員,定義友元函數樣例:friend 函數返回類型 函數名();緊跟類的最後對友元函數進行定義。但友元函數的關係不能進行傳遞,即a是b的友元函數,b是c的友元函數,但是a不是c的友元函數。同時友元函數的關係不能進行繼承
Protected:被保護成員聲明
訪問器與修改器:
訪問器與修改器一般命名爲set與get,其他的名字也可以,放在public中,其中的函數體則是對類中的數據進行修改或則讀取。
以下就是對以上知識點的一個案例。

 Class student{       
                          Int m;            
                          Public:\\public下的成員皆爲共有的,即不必須用成員函數和友元函數來訪問public中的數據                
                          Int getm();             
                          Friend int print(student &a);\\一般在定義友元函數時最好用傳引用             };  
                          Int student::getm()\\成員函數的類外定義(::前面是成員函數所屬類,後面則是函數的名字,代表函數是屬於student類的)
                         {        Return  m;} Int print(student &a)   \\print 爲全局函數,但print是友元函數,故也可以訪問類中的元素
                         {   Cout<<a.m;   Return 0;}

這樣便可以通過成員函數和友元函數來訪問內部元素。
在類中有着一種新型的指針,稱爲this指針,每個成員函數又有一個隱含的參數,就是this指針,即在某個類中的this指針相當於該類的指針,例如有一個類爲x,則該類的this指針類型爲x*.類的this指針只能在成員函數中使用,尤其是在函數的參數與類中的一個變量相同時就可以使用,例如:

 Int m;
  Int lk(int m){  this->m=m;}\\函數中參數m的值賦給類中的m

構造函數與析構函數:
構造函數用於對內部數據的初始化,既可以對類中的內部數據進行初始化,是的數據變得有意義,構造函數的函數名必須與類的名字相同。析構函數與構造函數的作用悄悄相反,析構函數則是在類被使用結束之後,進行善後,即是返回已經使用完的類的資源he自動釋放資源。像定義的new類型變量,在用delete進行銷燬時就會自動調用析構函數,定義時析構函數的名字應是~類的名字。類中有默認的構造函數與析構函數 ,在未對他們進行定義時,系統會默認調用系統中默認的構造函數與析構函數。定義構造函數時至少定義兩個構造函數,其中一個構造函數是有參的,另一個是無參的,構造函數後可接賦值列表,賦值列表在函數名之後,後接一個:,之後便是賦值列表,賦值順序是定義成員的順序,並且構造函數是無返回值的,但不同於void。雖然可以在定義成員之後在對成員進行賦值,但是構造函數時還可以在進行賦值的同時,對這些數據還可以進行各種操作,而自定義析構函數的作用也是如此,可以在該類消亡時做一些你所期望的操作,例如在文件結束時可以輸出一段話,或更改一些東西。
例:

Class KL{  
               Int m;    
               Public:             
               KL() {}               
                KL(int k):m(k)\\構造函數{                                                       }                          ~KL()\\析構函數                {                 函數體                }
       };

Static函數:
一個類中的對象數據只有自己的對象使用,而爲了是他們同類的數據可以進行共享,便引入了static成員,這種成員共享於這個類,這個類中不同的對象可以共用這個函數。
Static成員可以是變量也可以是一個函數定義方式:static 要定義的成員。
類的定義使得數據有了封裝性,並且更好的保證數據的安全,例如在一些比較重要的數據向客戶展現時,爲了不使客戶不修改數據,可將開放的成員函數只有讀的函數,從而只能看,而不能寫,構造函數則使得一些數據的初始化有了新的方法,const的函數可以更加保護類中數據不被修改,而static函數則是將相同類的對象連接在一起。

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