C 個人總結2 類和物件

2021-07-14 03:38:23 字數 1504 閱讀 9529

類和結構都是建立物件的模板。類是儲存在堆上的引用型別,結構是儲存在棧上的值型別。

類中的資料和函式稱為類成員。資料成員包含字段、常量和事件。函式成員包括方法、屬性、建構函式、終結器、運算子以及索引器。

方法中的引數可以是值傳遞也可以是引用傳遞。值型別資料是值傳遞,引用型別資料是引用傳遞。傳遞引用的效率更高,但是方法內操作的就是本體物件,而值型別資料在方法內只是乙個副本,因此方法內的操作不會影響值型別資料。ref關鍵字強制引數將引用傳遞給方法,示例如下:

public class program

}class car

}

out關鍵字功能幾乎和ref相同,除了在傳遞給方法前可以不用初始化。示例如下:

public class program

/// /// 說明:關鍵字out,通過方法返回多個引數

/// 呼叫方法時可以不初始化,但是方法內一定要初始化

///

/// /// /// public static void outmethod(out int i, out string s1, out string s2)

}

引數一般需要按照順序傳送給方法,命名引數允許按任意順序傳遞。比如以下方法:

string fullname(string firstname, string lastname)

fullname("james", "green") 和 fullname(

lastname: "green", firstname: "james")返回的結果是一樣的。

可選引數是一種很方便實用的功能,但是它必須放在引數列表的最後,並且必須提供預設值,示例:

int add(int a, int b = 10)

呼叫該方法時可以只傳遞a引數,如:add(6),那麼在add方法中,b就取預設值10,若傳遞了b引數,方法中b就取傳遞的值。

方法可以進行過載,也就是方法名相同,方法簽名不同(引數個數或型別不同)。

屬性是乙個方法或一對方法,在客戶端**看來,它是乙個字段。在屬性定義中一般包含乙個get方法和set方法,沒有get就是只寫屬性,沒有set就是唯讀屬性。get和set必須有乙個具有屬性的訪問級別。

宣告基本建構函式的語法就是宣告乙個與包含的類同名的方法, 但該方法沒有返回型別。如果沒有新增自定義的建構函式,類會自動新增乙個無引數的建構函式,如果新增了自定義建構函式,類就不會在自動新增了。

靜態建構函式不依賴於物件的建立,它會在建立類後的某個時刻呼叫(一般在**引用類的成員之前),但是不確定,因此不應該把某個特定時刻(比如引導程式集)需要執行的**放在靜態建構函式中,也不能預計不同類的靜態建構函式按什麼順序執行(靜態建構函式中的**不應依賴於其它類中靜態建構函式執**況),但是可以確保靜態建構函式只執行一次。靜態建構函式中只能處理類的靜態欄位或屬性。因為只由自己本身呼叫,所以訪問修飾符沒有意義,引數列表也沒有意義,乙個類也只能有乙個靜態建構函式。

c 類和物件 2

1 設計類就是設計型別 1 我們給這個賦予什麼合法值。2 類中包含什麼樣的函式和操作符。3 新型別的物件該如何被建立和銷毀。4 物件的初始化和賦值。5 物件作為函式的引數如何以值傳遞。6 誰使用此型別的物件成員。private 私有成員,只允許本類中的函式訪問,而類外部的任何函式都不能訪問。如果緊跟...

C 類和物件(2)

如果乙個類中什麼成員都沒有,就稱該類為空類,但是空類中並不是什麼都沒有,任何乙個類在我們不寫的情況下,都會自動生成6個預設成員函式。class student 建構函式雖然叫做構造,但是並不是構造物件,而是完成初始化工作。class date void print private int year ...

C 類和物件2

這篇部落格來介紹一下類的預設成員函式,在類中有6個預設成員函式,就算乙個類什麼都沒有,也會自動生成這6個預設成員函式。那麼這6個預設成員函式是什麼呢?完成初始化和清理的兩個函式 建構函式和析構函式 完成拷貝複製的兩個函式 拷貝建構函式和賦值過載函式 取位址過載的兩個函式 普通物件和const物件取位...