學習總結10 型別轉換

2021-10-01 11:36:51 字數 3042 閱讀 5580

小記:靜默如初,安之若素

1. 隱式型別轉換

eg:

char c =

'a';

int i = c;

//隱式轉換(char->int->=)

void

func

(int i)

func

(c);

intfoo

(void

)

2. 顯示轉換

2.1 c++相容c的強制型別轉換

eg:

char c =

'a';

int i =

(int

)c;//c風格

int i =

int(c)

;//c++風格

2.2 c++中增加了四種操作符形式的型別轉換

1)靜態型別轉換

語法形式:

目標型別變數 = static_cast《目標型別》( 源型別變數);

適用場景:

將void*轉為其它型別指標。

2)動態型別轉換

語法形式:

目標型別變數 = dynamic_cast《目標型別》( 源型別變數);

3)常型別轉換

語法形式:

目標型別變數 = const_cast《目標型別》( 源型別變數);

適用場景:

用於去除乙個指標或引用的常屬性;

void func(const int & a)

eg:

const

int a =0;

const

int*pa =

&a;*pa =

200;

//error

int*pa2 =

const_cast

<

int*

>

(&a)

;*pa2 =

200;

//ok

1 #include 

2using

namespace std;34

intmain

(int argc,

char

*ar**)

5

4)重解釋型別轉換

語法形式:

目標型別變數 = reinterpret_cast《目標型別》( 源型別變數);

適用場景:

1. 任意型別指標或引用之間轉換;

2. 在指標和整形數之間進行轉換;

eg:向物理記憶體0x12345678存放資料100;

int* paddr =

reinterpret_cast

<

int*

>

(0x12345678);

*paddr =

100;

1 #include

2using

namespace std;34

intmain

(void)5

;1112//"\000"<=> '\0' <=> 0

13char buf=

"0001\00012345678\000123456";14

//t * pt = buf;//error

15 t * pt =

reinterpret_cast

>

(buf)

;16 cout <<

"type : "

<< pt-

>type << endl;

//0001

17 cout <<

"id : "

<< pt-

>id << endl;

//12345678

18 cout <<

"passwd : "

<< pt-

>passwd << endl;

19return0;

20}21 執行結果

type :

0001

id :

12345678

passwd :

123456

小結:c++之父給c程式設計師的建議

1 慎用巨集(#define),使用const,enum,inline替換;

eg:

#define pai 3.14

==>

const

double pai =

3.14

----

----

----

----

----

----

----

--#define state_sleep 0

#define state_run 1

#define state_stop 2

==>

enum state

;#define max(a, b) ((a)>(b)?(a):(b))

==>

inline

intmax

(int a,

int b)

2 變數隨用隨宣告同時初始化;

eg:

char buff[

1024];

//未初始化,可能會造成部分記憶體未使用

3 盡量適用new / delete 替換 malloc / free;

4 少用void *, 指標計算, 聯合體, 強制轉換;

5 盡量使用string表示字串,少用c風格char *。

RxJava學習2 型別轉換

1.簡單的轉換,通過map轉換 比如傳送的integer型別,但是接收的是string型別 observable observable observable.just 1,2,3,4,5 map new function integer,string 2.通過flatmap進行平鋪處理。假如要列印兩...

Solidity學習 (13)型別轉換

型別轉換,是乙個十分重要,常用的手段 一 隱式轉換 隱式轉換,就是當乙個運算子能支援不同型別,編譯器會隱式的嘗試將乙個運算元的型別,轉為另乙個運算元的型別,賦值同理。條件是 值型別間的互相轉換只要不丟失資訊,語義可通則可轉換。就是說,uint8可轉換到uint16 uint32 等,但不能反過來 同...

10 型別檢查

分為兩種 傳統rtti和reflection 傳統rtti 多型時用到。基類引用子類,呼叫多型方法時進行rtti。強制型別轉換。檢查是否能轉,不能轉丟擲異常,執行時 獲取class物件的方法 class.forname object.class stiatic函式,在類首次載入時執行。按需執行 ne...