C 高階程式設計 物件和型別

2021-08-13 04:46:08 字數 1153 閱讀 3665

類  和 結構 都是建立物件的模板, 都可以用 new 類例項化

結構是值型別,儲存在棧上, 類是引用型別  儲存在堆上 

類可以包含資料成員,函式成員 和 類成員

資料成員: 字段,常量 和 事件 (在發生某些行為時,事件可以讓物件通知呼叫方,客戶可以包含事件處理程式來響應事件)

函式成員 提供了 操作類中資料的某些功能  包括方法,屬性,建構函式  和 終結器 (finalize)運算子 以及 索引器

ref  迫使 值 以引用方式傳遞

使用ref修飾的引用型別引數 , 可以在方法內部 修改 引用型別引數指向的位址。否則不能修改。

這塊使用ref 會直接操作 引數指向的位址

如果沒有ref 就會將位址拷貝乙份,在拷貝的位址上進行操作,指向的新的位址只會儲存在 拷貝的引用上,因此退出方法時 並不會儲存修改!

傳遞給方法的引數必須初始化

在方法引數 前面加上 out  字首 就可以不初始化

在呼叫方法時 也必須加上 ref  或者 out

可選引數, 必須為引數 定義 預設值 並且 必須放在最後

方法過載 : 只需省宣告 同名 但 引數個數或型別不同  的方法

兩個方法不能僅在 返回型別上有區別

兩個方法不能僅根據 引數 宣告為 ref 或者 out  來區別 

包含 get 和 set 訪問器的 字段 就是屬性 

在get 和 set 訪問器 中,至少有乙個要有訪問級別  。 即 不新增 private和  protect

自動實現屬性 , 不能在屬性的驗證中,驗證屬性的有效性

public int age

通過屬性  訪問字段,而不是 直接訪問字段

如果實現某個方法或 屬性 僅是呼叫另乙個方法,或返回乙個字段 , 則該方法或屬性 肯定是內聯的

建構函式:

如果提供了 帶引數的建構函式 ,編譯器 就不會提供預設建構函式

只有在沒有提供任何建構函式 , 編譯器才會提供預設建構函式

c# 中 可以認為 finalize 就是 析構函式 

在類中,析構函式和 c++ 一樣  呼叫  ~classname(){}  

但是 在析構函式中 還是 會呼叫  基類(object) 中 的 finalize 函式  

到 page 77 建構函式 

C 高階程式設計 熟悉類和物件

step1 從最小單元spreadsheetcell了解類和物件 1 編寫類定義和類方法 考慮實際電子 允許儲存的物件可以是數字,可以是文字資料。如果接收文字資料,電子 將轉換為數字。簡單的 程式設計實現如下 spreadsheetcell.h 類方法定義 spreadsheetcell.h ifn...

C 高階程式設計筆記之第三章 物件和型別

類與結構的區別是它們在記憶體中的儲存方式 訪問方式 類似儲存在堆上的引用型別,而結構是儲存在棧上的值型別 和它們的一些特徵。語法上,類與結構非常相似,主要區別是結構使用關鍵字 struc t 代替 class 來宣告。3.3.1 資料成員 資料成員是包含類資料 字段 常量和事件的成員。3.3.2 函...

C 物件導向高階程式設計 筆記

最近重新複習了一下c 物件導向高階程式設計中知識點,學而時習之,不亦說乎。拷貝建構函式,拷貝的是同型別的物件 賦值建構函式 檢測自我賦值 為什麼?有什麼作用?if this str return this 組合繼承 委託示例 委託 繼承 composite pimpl 編譯防火牆 左邊永遠不用編譯,...