Inside The C++ Object Model(四)

============================================================================
4-1. Member 的各類調用方式
靜態成員函數(static member functions,不屬於對象,沒有this指針)不能直接存取Nonstatic數據;同時不能被聲明爲const(const用於後置修飾函數時只用於限定成員函數,意味着將被修飾的成員函數的隱式參數——this指針由原來的Class* const變爲const Class* const類型,使得在該成員函數內不能修改爲員屬性,除非該屬性被mutable修飾)。
數目各類調用方式函數

(1)Nonstatic Member Functions(非靜態成員函數)this



名稱的特殊處理
編譯器會把參數和函數名稱編碼在一塊兒(函數特徵標:函數名稱+參數數目+參數類型),可是若是「返回類型」聲明錯誤,就沒辦法檢查出來。編碼

(2)Virtual Member Functions(虛擬成員函數)spa



注:「經由一個class object調用一個Virtual function」,這種操做應該老是被編譯器像對待通常的Nonstatic member function同樣地加以決議。因此以下調用操做:
// Point3d obj
obj.normalize();
會被編譯器轉換爲:
// 經由obj調用的函數實體只能夠是Point3d::normalize()
normalize_7Point3dFv(&obj);3d

(3)Static Member Functions(靜態成員函數)指針


圖片4-1-6;code


圖片4-1-7;orm


圖片4-1-8;對象

============================================================================
4-2. Virtual Member functions(虛擬成員函數)
(1)咱們已經知道Virtual function的通常實現模型:每個class 有一個virtual table,內含該class 之中有做用的Virtual function 地址,而後每一個object有一個vptr,指向Virtual table的所在。blog


圖片4-2-1;


圖片4-2-2;

(2)多重繼承下的Virtual table
圖片4-2-3;


圖片4-2-4;


注:Sun編譯器將多個Virtual tables 連鎖爲一個:指向次要表格的指針,可由主要表格名稱加上一個offset得到(能夠得到速度提高)。

(3)虛擬繼承下的Virtual Functions


圖片4-2-5;


圖片4-2-6;
注:不要在一個Virtual base clas 中聲明Nonstatic data members,不然,虛基類,虛函數和相關繼承致使的各類offset調整所來的複雜性會讓你猶如進入迷宮通常。


============================================================================
4-4. 指向 Member Function 的指針
(1)普通Member Function 指針


圖片4-4-1;

//member function指針的聲明語法:
double (Point::*coord)();
//指定其值
coord = &Point::y;
//調用.origin爲Point對象
(origin.*coord)(); // 或 (ptr->*coord)();
// 此操做會被編譯器轉化爲以下形式:
// 虛擬C++碼
(coord)(&origin) // (coord)(ptr);

(2)支持「指向Virtual Member Functions」之指針

圖片4-4-2;


圖片4-4-3;

(3)在多重繼承之下


圖片4-4-4;


============================================================================
4-5. Inline Functions


圖片4-5-1;

(1)形式參數


圖片4-5-2;

(2)局部變量


圖片4-5-3;


圖片4-5-4;


圖片4-5-5;


圖片4-5-6;


圖片4-5-7;

============================================================================

相關文章
相關標籤/搜索