小記:靜默如初,安之若素
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...