學習筆記 C 封裝(下)

2021-07-23 10:51:13 字數 1651 閱讀 3672

初始化乙個有n個物件的物件陣列時呼叫n次建構函式

相應的,銷毀時呼叫n次析構函式

例項化乙個物件時,如果這個物件包含物件成員,則先例項化物件成員,在例項化這個物件

物件成員實踐

當資料成員中含有指標時,淺拷貝會使兩個物件的成員指標指向相同的記憶體位址

深拷貝不是簡單的值拷貝,而是將指標成員指向的記憶體資料也進行拷貝

前面經常用到的,指向物件的指標student *p = new student;乙個物件的成員含有指向另乙個物件的指標

this指標指向的是它所在物件的位址

每個函式呼叫實際上都需要傳遞this指標,只是編譯器幫我們做了,我們看不到

this指標可以看成是每個函式都有的乙個隱藏引數只能呼叫常成員函式。如果呼叫非const成員函式則報錯。

因為編譯器給函式預設新增非const型別的this指標,該指標指向的是非const型別的物件,非const型別的指標不能用於指向const型別的物件。

感覺有點繞,實際就是:

const student *this只能指向int m_function() const;

相應的,student *this只能指向int m_function();

當常物件成員呼叫的成員函式中有對資料成員的操作時,要把這個成員函式定義成常成員函式(否則*this無法轉換為const *this)。當呼叫的普通成員函式是資料成員無關的(和this不相關),則可以呼叫這個普通成員函式。

定義方法:int function() const;

實際上const修飾的是函式的隱含引數this指標。

常成員函式可以過載:

相應型別的物件呼叫相應型別的成員函式:

總結 4.1 常成員函式的本質是內部使用常this指標

4.2 常成員函式內部使用資料成員時,不能改變資料成員的值

4.3 常成員函式內部也只能呼叫常成員函式,不能呼叫普通的成員函式

4.4 以上,把『成員函式』替換為『物件成員』也適用。

物件常指標,物件常引用

常物件(this唯讀許可權)只能呼叫常成員函式,不能呼叫普通成員函式

普通物件(this有讀寫許可權)能呼叫常成員函式,也能呼叫普通成員函式

常指標和常引用都只能呼叫物件的常成員函式

注意事項與常物件成員基本相同

//todo

C 筆記( 封裝(下))

c 物件陣列和物件成員 物件陣列 例子 class coordinate int main void 物件成員 初始化時先初始化成員物件,再初始化總物件,銷毀時先銷毀總物件再銷毀其中成員物件。使用物件成員的例子 include include include line.h using namespa...

陣列常用例項封裝 下

1.陣列 字串 乙個元素出現的次數function getelecount obj,ele return num 2.獲取物件陣列某些項function getelecount arr,keys var keys keys.split newarrone 是否只是需要獲取某一項的值 if keys....

C 學習筆記 封裝

所謂封裝就是將某些東西包裝盒隱藏起來,讓外界無法直接使用,只能通過某些特定的方式才能訪問。封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是通過外部介面以及特定的訪問許可權來使用類的成員。類通常分為以下兩個部分 封裝的基本概念 因此,需要在類的表示法中定義屬性和行為的公開級別...