相對動態型別轉換,靜態型別轉換則做範圍更廣的轉換,但前提是必須是相關的型別,也就是說,編譯器必須認為是可理解的,例如,乙個非多型的類層次結構,祖孫物件的指標互易。如,研究生物件指標到學生物件指標的轉換,或反之。由於void *到任何型別指標都可以進行想融性的轉換,所以,void *到學生物件的指標轉換也可以由static_cast來進行,還是從區域性堆空間申請的空間轉換為整形陣列空間等。甚至有時候,要將void * 轉到多型物件的指標,也要先經過static_cast過度一下。
void fn(void * pd, void * pa)
假如student類與graduatestudent類無關,那麼ps和pgs指標只能是null(#define null 0);假如pd不是指標,而因為pp是指標,所以pp的值也只能是null;假如pa不是指標,則px的值只能是null,而且連累到psa的值也是null;這就是使用static_cast所帶來的型別安全轉換的檢查幫助,比無根據地進行型別轉換形式type(表示式)的"防盜性"要強,因為通過指標的非null判斷,static_cast可以避免該轉換後的操作失常。
static_cast轉換並不是專門針對指標的,只要是相關型別的轉換,都可以操作。無非它主要是針對確定的型別,而不是針對多型。關於多型的型別轉換,由dynamic_cast去做。
C 讀書筆記常量轉換(const cast)
const int a 1 int ra a 錯 int p a 錯 const int cra a ok const int cpa a ok int b 2 ok int rb b ok int pb b ok const int rb b ok const int pb b ok 也就是說,從...
C 讀書筆記之抽象
抽象程式設計的關鍵在於介面的相對穩定性。但是,不變的事物是沒有的,包括介面。如何使介面保持相對穩定,或者說如何設計和維護介面,便是恆久保持抽象程式設計質量的關鍵。抽象類與與純虛函式 抽象類 在類定義中至少宣告乙個純虛函式。純虛函式 所謂純虛函式是指被標明為不具體實現的虛函式。例如 我並不知道怎樣實現...
C 讀書筆記
1.內建函式 inline必須在呼叫前進行完整定義,語 define相同,但是消除了不安全性 例 inline float circle float r 2,函式原型 語法形式 返回型別 函式名 參數列 1 函式原型的參數列中不包含引數的名字,而只包含型別 2 函式定義由函式說明部分和函式體構成 3...