第四章 Function語義學 成員的各種呼叫方式

2022-09-09 05:57:13 字數 583 閱讀 7311

一、非靜態成員函式:

1.改寫函式的signature(函式名,函式引數個數,函式引數):①增加this指標作為引數。②將函式內部對成員的訪問改寫成經由this指標訪問③將成員函式重新寫成乙個經過mangling的外部函式。

作用:用於區分不同的過載函式,實現過載並且幫助編譯器檢查不正確的過載呼叫。

二、虛成員函式:

1.將函式呼叫轉化為通過指向虛函式表的指標vptr的間接呼叫,其餘與非成員靜態函式相同。(vptr也會被mangled,因為可能存在多個vptr)

三、靜態成員函式:

1.以前沒有靜態成員函式時的呼叫:((ponit3d*)0)->object_count(); //將0轉化為乙個物件來呼叫成員函式

2.性質:①不能直接訪問類中的非靜態成員②不能被宣告為const、volatile或virtual.③不需要經由物件呼叫(但是可以這麼做)

3.編譯器你將其轉化為一般的非成員函式的呼叫(也會被mangled)

4.對靜態成員函式取位址將得到其記憶體位址(同普通函式一樣),所以&point3d::object_count()得到的型別是普通函式指標unsigned int (*)(),而不是成員函式指標。

第四章 function語意學

情況一 非靜態成員函式 c 的設計準則就是非靜態成員函式至少和一般的非靜態函式有相同的效率,因此非靜態成員函式會被改寫 舉個例子 float point3d magnitude3d const 改寫函式原型,新增乙個額外的引數this到member function中,用於提供乙個訪問管道,使得cl...

第四章 繼承

一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...

第四章 物件

三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...