1、類是對現實世界中事物的抽象,將具有相同屬性的一類事物稱作類,類的例項稱為物件。類是一種複雜的資料型別,它是將不同型別的資料和與這些資料相關的操作封裝在一起的集合體,類具有對資料的抽象性、隱藏性和封裝性。類物件的行為類的內部資料和方法決定,外部行為通過操作介面實現。
2、類、物件的定義
包括兩部分:
a.說明部分:資料成員、成員函式
b.實現部分:成員函式實現
訪問許可權:
public(公有):提供類的介面,可以被成員函式和程式中被訪問;
private(私有):被隱藏的資料,只有該類的成員函式和友元函式才可以訪問,通常將資料成員定義為私有成員;
protected(保護):受保護的成員,具有公有成員或私有成員的特性;
物件定義:
格式:《類名》 《物件名錶》
ctask objtask;
定義ctask 類的物件如下:
ctask obja,objb[5],*pobjc;
其中:obja 是一般物件;
objb[5] 是物件陣列;
pobjc 是指向類 ctask 物件的指標;
建立物件時,每個物件的資料成員具有不同的儲存空間,以存放不同的資料,但成員函式為每個物件所共有。
我們也可以注意到,乙個類物件所佔記憶體空間由它的資料成員所佔記憶體空間總和決定,而類的成員函式不佔據物件的記憶體空間。
3、物件訪問成員
與結構體變數訪問成員的方法相同,有如下兩種:
訪問一般物件成員 :《物件名》.《資料成員名》
《物件名》.《成員函式名》
訪問指向物件的指標的成員:《物件指標名》.《資料成員名》
《物件指標名》.《成員函式名》
4、成員函式的定義與呼叫
定義類中的成員函式可以採用三種方式:
a.成員函式的定義及實現在類體中完成;
b.成員函式的定義及實現在類體外完成;
c.成員函式的定義及實現在不同的檔案中完成;(常用)
常用呼叫成員函式的方式:
a.成員訪問符呼叫
ctask obja;
obja.myfun( );
b.指向類物件的指標呼叫
ctask *pobja;
pobja=&obja;
pobja->myfun( );
c.引用呼叫
ctask &task=obja;
task.print( );
this 指標:
由於乙個類物件呼叫的成員函式都是同乙個**段,物件呼叫成員函式時,成員函式需要識別其中的資料成員屬於哪個物件,以便對其進行操作。
為解決這一問題,實際上,在每個成員函式中,都隱含了乙個this指標,該指標指向正在呼叫成員函式的物件。這個位址存放在隱含的形參this指標中。故,對成員函式內資料成員的訪問都隱含地加上了this指標。
物件的生存期指物件從開始建立到被釋放為止的存在時間,物件按生存期的不同分為以下三種:
區域性物件:定義在函式體或程式塊內,作用域和生命週期都是區域性的;
全域性物件:定義在某個檔案中,作用域為包含該檔案的整個程式,生命週期是區域性的;
靜態物件:分為內部靜態物件和外部靜態物件,生命期都是全域性的,前者作用域為定義它的函式體和程式塊內,後者作用域為定義它的檔案;
5、類與結構體的區別
預設訪問:
類定義中預設訪問級別是 private;
結構體定義中預設訪問級別是public;
初始化:
類通過建構函式初始化資料成員;
結構體的初始化依靠特定的語法格式;
oc中類的宣告 定義
import xyzperson.h inte ce person nsobject 資料成員 nsstring name 屬性宣告 property nsstring firstname property readonly nsstring lastname property nsnumber y...
申明(宣告) 定義及預設引數
變數定義 用於為變數分配儲存空間,還可為變數指定初始值。程式中,變數有且僅有乙個定bai義。變數宣告 用於向程式表明變數的型別和名字。區別 定義也是宣告,extern宣告不是定義。定義分配儲存空間,而宣告不會。通過使用extern關鍵字宣告變數名而不定義它。事實上它只是說明變數定義在程式的其他地方。...
C 變數宣告定義
1.extern 宣告變數,在乙個檔案裡宣告以後,表示該變數要去其它檔案找變數,告訴編譯器 你現在編譯的檔案中,有乙個識別符號雖然沒有在本檔案或本檔案當前位置中定義,但是它是在別的檔案中或本檔案其它位置定義的全域性變數,你要放行!宣告變數 extern type variable 有extern,無...