C 高階STL 型別轉化

2021-08-28 16:32:00 字數 2794 閱讀 2180

class

building

;class

animal

;class

cat:

public animal

;//int -> char

int a =97;

char c = static_cast<

char

>

(a);

cout << c << endl;

//int* -> char* 普通型別指標(無效)

// int* pint = null;

// char* pchar = static_cast(pint);

//不同類指標之間的轉化 (無效)

// building* pbuilding1 = null;

// animal* panimal1 = static_cast(pbuilding1);

// 子類指標->父類指標

cat* pcat2=null;

animal*panima2 = static_cast>

(pcat2)

;// 父類指標->子類指標

animal* panimal3 = null;

cat* pcat3 = static_cast>

(panimal3)

;// 子類引用-> 父類引用

cat cat4;

cat& ycat4 = cat4;

animal& yanimal4 = static_cast>

(ycat4)

;// 父類引用 -> 子類引用

animal animal5;

animal& yanimal5 = animal5;

cat& ycat5 = static_cast>

(yanimal5)

;

class

building

;class

animal

;class

cat:

public animal

;//不同類指標之間的轉化 (無效)

//building * pbuilding1 = null;

//animal * panimal1 = dynamic_cast(pbuilding1);

// 父類引用 -> 子類引用 (無效)

//animal animal5;

//animal& yanimal5 = animal5;

//cat& ycat5 = dynamic_cast(yanimal5);

// 父類指標->子類指標 (無效)

//animal* panimal3 = null;

//cat* pcat3 = dynamic_cast(panimal3);

// 子類引用-> 父類引用

cat cat4;

cat& ycat4 = cat4;

animal& yanimal4 = dynamic_cast>

(ycat4)

;// 子類指標->父類指標

cat* pcat2 = null;

animal*panima2 = dynamic_cast>

(pcat2)

;

// 引用

int a =10;

const

int&b= a;

//不可以通過 b 去修改 a

情況(1)

//編譯器報錯

int&c=b;

情況(2)

//這樣就可以通過c修改 a 和 b

int&c=const_cast<

int&

>

(b);

c =11;

//指標

//const -> none const

const

int* p1 = null;

int*p2 = p1;

(無效),//不可用const int* 型去初始化 int*

int*p3= const_cast<

int*

>

(p1)

;//ok

//none const-> const

int* p1 = null;

const

int*p2 = const_cast<

const

int*

>

(p1)

;

class

building

;class

animal

;class

cat:

public animal

;// 不同類指標之間的轉化

building* b1;

animal* a1;

a1 = reinterpret_cast>

(b1)

;// 函式指標之間轉化

typedef void

(func1)

(int

,int);

typedef void

(func2)

(int

,char);

func1* pfun1=null;

func2* pfun2 = reinterpret_cast>

(pfun1)

;

C 型別轉化

c 型別轉化 在理解c 型別轉換前,我們先回顧c語言中型別轉換。c風格的強制型別轉化很簡單,不管什麼型別轉換統統是 type b type a。但是c風格的型別轉換有不少的缺點,有的時候用c風格的轉換是不合適的,因為它可以在任意型別之間轉換,比如你可以把乙個指向const物件的指標轉換成指向非con...

c 型別轉化

資料型別轉換 隱式轉換 int age 10 double sum age int salary 150000 decimal money salary double speed 10.4f float minspeed float speed string num 123 int n int.pa...

C 型別轉化

const char a 必須const 因為 hello 存在常量區,為唯讀 string str hello str 1 s pass a str.c str a 1 s fail 報錯 唯讀,指標指向常量區char a a 11 int b atoi a cout string str to ...