嵌入式物件導向程式設計 型別轉換

2021-10-04 06:46:02 字數 1627 閱讀 9272

一、static_casr(expr)

(1)類似於c語言的強制轉化,保證**的安全性和正確性。

(2)可用於①相關型別轉換;例如整型、實型;②子類轉父類;③ void *指標與其他型別指標之間的型別轉換。

(3)不允許指標之間型別的轉換(特例:僅允許void*與其他指標之間的型別轉換)。

如:char ch = 『a』;

char *pc = &ch;

int *pt = static_cast(pc); //

指標類char *->int *

//上方**是該類錯誤示例

注:①指標之間的賦值規則:必須是相同指標型別之間賦值(相同步長)。

② void*是萬能指標,可以接受任何指標的型別。

2、使用示例:

(1)非指標型別間轉換

double b =1.234;

int a = static_cast(b);  //double->int ;

char ch = static_cast(a);  // int->char;

(2)void *指標與其他型別指標之間的轉換

int *pa = &a;

void *p = pa;

int *pa 2= static_cast(p) ; //指標類void *->int *

二、const_ casr(expr)

1、作用:只能用於去除指標和引用的const屬性。

注:使用該運算子轉換意味著**設計上存在缺陷。

2、使用示例:

(1)去除指標

int a = 1;

const int *pa4 = &a; //pa4指標

int *pa5 = const_cast(pa4);

//去除const int *pa4的const屬性成為int *pa4賦左

(2)去除引用

int a = 1;

const int &la = a; //la引用

int &la2 = const_cast(la);

//去除const int &la的const屬性成為int &la賦左

三、dynamic_cast(expr)

1、作用:執行時型別識別和檢查,用於父類子類之間的轉換。

四、reinterpret_ casr(expr)

1、作用:任意無關型別之間的轉換。

②其他型別是允許const賦值給非const型別的。

2、特點:不安全,既不在編譯器期也不在執行期進行檢查,安全性完全由程式設計師決定。

3、使用示例:

char *pc = &ch;

int *pa3 = reinterpret_ casr(pc); //指標類char *->int *

4、錯誤示例:

int a = 1;

float c = reinterpret_cast(a); //int->float

嵌入式程式設計

1 interrupt double compute area double radis 1 isr不能返回乙個值。2 isr不能傳遞引數。3 在許多處理器中浮點是不可重入的。4 printf 經常有重入和效能上的問題,所以一般不使用printf 2.volatile 1 volatile的語法和c...

嵌入式程式設計

對於簡單的應用程式,輪詢 許多時候也被稱作超級迴圈 實現起來比較簡單,而且非常適合簡單任務 見圖4.4 不過,當應用程式變得複雜或者對處理能力的要求更高時,輪詢就不合適了。例如,當乙個程序占用時間過長,其他模組在這段時間內就不會收到處理器的任何服務。即便不需要任何處理,處理器也得一直執行輪詢程式,這...

嵌入式物件導向程式開發(1)

d2.26 嵌入式物件導向程式設計 嵌入式linuxc 開發 學習內容 c c with class 95 c中學過的資料型別 基本控制語句 函式 關鍵字 位運算 指標 陣列 1 c到c 公升級 語法公升級 2 c 物件導向的三大特點 封裝 繼承 多型 3 c 模板 4 c 異常處理 5 c 檔案處...