【c++自我精講】基礎系列五 隱式轉換和顯示轉換
1)c++
的型別轉換分為兩種,一種為隱式轉換,另一種為顯式轉換。
2)c++
中應該盡量不要使用轉換,盡量使用顯式轉換來代替隱式轉換。
定義:隱式轉換是系統跟據程式的需要而自動轉換的。
1
)c++型別(char,int,float,long,double等)的隱式轉換:
算術表示式隱式轉換順序為: 1
、char - int - long - double 2
、float - double
//1)
算術表示式
intm = 10
;double
n = m;//n = 10.0;
隱式把m轉為double型別
intm = 10
;float
f = 10.0
;double
d = m + f;//n = 20.0;
隱式把m和f轉為double型別
//2)
賦值int
*p = null; //null(0)
隱式轉換為int*型別的空指標值
//3)
函式入參
float
add(float
f);
add(
2); //2
隱式轉換為float型別
//4)
函式返回值
double
minus(int a, int
b)
2
)c++類物件的隱式轉換:
void
fun(ctest test);
class
ctest
fun(
20);//
隱式轉換
定義:顯式轉換也叫強制轉換,是自己主動讓這個型別轉換成別的型別。
1
)c++型別(char,int,float,long,double等)的顯式轉換:
intm = 5;
char
c = (char)m;//
顯式把m轉為char型別
double
d = 2.0;
inti = 1;
i += static_cast(d);//
顯式把d轉換為int型別
2
)c++類物件的顯式轉換:當類建構函式只有乙個引數或除了第乙個引數外其餘引數都有預設值時,則此類有隱含的型別轉換操作符(隱式轉換),但有時隱式轉換並不是我們想要的,可在建構函式前加上關鍵字explicit,來指定顯式呼叫。
void
fun(ctest test);
class
ctest
fun(
20);//error
隱式轉換
fun(static_cast(20)); //ok
顯式轉換
C 自我精講 基礎系列四 static
變數的儲存型別 儲存型別按變數的生存期劃分,分動態儲存方式和靜態儲存方式。1 動態儲存方式的變數,生存期為變數所在的作用域。即程式執行到此變數時才為其分配儲存空間,作用域結束時,會自動收回為其分配的儲存空間。2 靜態儲存方式的變數,生存期為整個程式執行的過程。即程式開始時就為其分配儲存空間,程式結束...
C 自我精講 基礎系列六 PIMPL模式
c 自我精講 基礎系列六 pimpl模式 0 前言 很實用的一種基礎模式。1 pimpl解釋 pimpl private implementation 或 pointer to implementation 是通過乙個私有的成員指標,將指標所指向的類的內部實現資料進行隱藏。2 pimpl優點 舉例 ...
C 自我精講 基礎系列三 過載
c 自我精講 基礎系列三 過載 0 前言 分二部分 函式過載,操作符過載。1 函式過載 函式過載 指在同一名字空間中,函式名稱相同,引數型別 順序或數量不同的一類函式,同一函式名的函式能完成不同功能。非函式過載,只是返回值不一樣 void fun int i int fun int i 非函式過載,...