C++四種類型轉(zhuǎn)換全解
C++ 中的四種類型轉(zhuǎn)換是 C++ 引入的更安全、更明確的類型轉(zhuǎn)換操作符,相比 C 風(fēng)格的強(qiáng)制轉(zhuǎn)換更加精細(xì)和可控:
- static_cast? - 靜態(tài)類型轉(zhuǎn)換
最常用的轉(zhuǎn)換,用于良性轉(zhuǎn)換
int i = 10;
double d = static_cast<double>(i); // 基本類型轉(zhuǎn)換
class Base {};
class Derived : public Base {};
Base* b = new Derived();
Derived* d = static_cast<Derived*>(b); // 向下轉(zhuǎn)換(不安全,不檢查)
int* p = nullptr;
void* vp = static_cast<void*>(p); // void* 轉(zhuǎn)換- dynamic_cast? - 動(dòng)態(tài)類型轉(zhuǎn)換
用于多態(tài)類型的向下轉(zhuǎn)換,運(yùn)行時(shí)檢查類型安全
class Base { virtual void foo() {} };
class Derived : public Base {};
Base* b = new Derived();
// 安全的向下轉(zhuǎn)換
Derived* d = dynamic_cast<Derived*>(b);
if (d != nullptr) { // 轉(zhuǎn)換成功
// 使用 d
}
// 轉(zhuǎn)換失敗返回 nullptr(對指針)或拋出異常(對引用)- const_cast? - 常量性轉(zhuǎn)換
添加或移除 const、volatile 屬性
const int ci = 10;
int* pi = const_cast<int*>(&ci); // 移除 const
*pi = 20; // 未定義行為,ci 原本是 const
void print(char* str) { /* 修改 str */ }
const char* s = "hello";
print(const_cast<char*>(s)); // 臨時(shí)移除 const- reinterpret_cast? - 重新解釋轉(zhuǎn)換
低級別的重新解釋,最危險(xiǎn)的轉(zhuǎn)換
int* p = new int(65); char* c = reinterpret_cast<char*>(p); // 重新解釋指針類型 int i = 0x12345678; float f = reinterpret_cast<float&>(i); // 二進(jìn)制重新解釋 // 函數(shù)指針轉(zhuǎn)換 typedef void (*FuncPtr)(); FuncPtr func = reinterpret_cast<FuncPtr>(0x12345678);


到此這篇關(guān)于C++四種類型轉(zhuǎn)換全解的文章就介紹到這了,更多相關(guān)C++四種類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C++ void 指針和指針類型轉(zhuǎn)換方法
- C++特殊類設(shè)計(jì)與類型轉(zhuǎn)換詳細(xì)代碼示例
- C++中不同類型默認(rèn)轉(zhuǎn)換的規(guī)則和機(jī)制詳解
- C++中五種類型轉(zhuǎn)換的深度對比與實(shí)踐指南
- C++強(qiáng)制類型轉(zhuǎn)換詳細(xì)示例代碼
- C++特殊類設(shè)計(jì)及類型轉(zhuǎn)換舉例詳解
- C++迭代器和顯示類型轉(zhuǎn)換方式
- 一文帶你探索C++中類型轉(zhuǎn)換的奧秘
- 詳解C++中的四種類型轉(zhuǎn)換運(yùn)算符
- C++類型轉(zhuǎn)換通用接口設(shè)計(jì)實(shí)現(xiàn)
相關(guān)文章
C語言實(shí)現(xiàn)關(guān)機(jī)小程序
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)關(guān)機(jī)小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
C語言字符串函數(shù)介紹與模擬實(shí)現(xiàn)詳解
字符串函數(shù)(String?processing?function)也叫字符串處理函數(shù),指的是編程語言中用來進(jìn)行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進(jìn)行字符串拷貝,計(jì)算長度,字符查找等的函數(shù)2022-02-02
C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用
strcpy和memcpy都是標(biāo)準(zhǔn)C庫函數(shù),strcpy提供了字符串的復(fù)制而memcpy提供了一般內(nèi)存的復(fù)制。下面通過本文重點(diǎn)給大家介紹C/C++中的mem函數(shù)和strcopy函數(shù)的區(qū)別和應(yīng)用,非常不錯(cuò),感興趣的朋友一起看下吧2016-08-08
C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼
這篇文章主要介紹了C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下2016-11-11
C語言詳解數(shù)據(jù)結(jié)構(gòu)與算法中枚舉和模擬及排序
枚舉和模擬其實(shí)是沒什么算法可言的,大多數(shù)都是按照題目意思去寫,這里提供快排和歸并的兩個(gè)模板,感興趣的朋友來看看吧2022-04-04

