国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

2021個人網(wǎng)站盈利模式恢復(fù)2345網(wǎng)址導(dǎo)航

2021個人網(wǎng)站盈利模式,恢復(fù)2345網(wǎng)址導(dǎo)航,做編程的網(wǎng)站有哪些,西安做網(wǎng)站公司玖佰網(wǎng)絡(luò)強制類型轉(zhuǎn)換運算符 帶著三個疑問閱讀: 出現(xiàn)的背景是什么?何時使用?如何使用? MSDN . 強制轉(zhuǎn)換運算符 C中的四種強制類型轉(zhuǎn)換符詳解 static_cast (1) 使用場景 在基本數(shù)據(jù)類型之間轉(zhuǎn)換,如把 int 轉(zhuǎn)換為 char&#…

強制類型轉(zhuǎn)換運算符

帶著三個疑問閱讀:

  1. 出現(xiàn)的背景是什么?
  2. 何時使用?
  3. 如何使用?

MSDN . 強制轉(zhuǎn)換運算符
C++中的四種強制類型轉(zhuǎn)換符詳解

static_cast

(1) 使用場景

  • 在基本數(shù)據(jù)類型之間轉(zhuǎn)換,如把 int 轉(zhuǎn)換為 char,這種帶來安全性問題由程序員來保證;
  • 在有類型指針與 void * 之間轉(zhuǎn)換;
  • 用于類層次結(jié)構(gòu)中基類和派生類之間指針或引用的轉(zhuǎn)換。
    • 上行轉(zhuǎn)換(派生類---->基類)是安全的;
    • 下行轉(zhuǎn)換(基類---->派生類)由于沒有動態(tài)類型檢查,所以是不安全的。

(2) 使用特點

  • 主要執(zhí)行非多態(tài)的轉(zhuǎn)換操作,用于代替C中通常的轉(zhuǎn)換操作。
  • 隱式轉(zhuǎn)換都建議使用 static_cast 進(jìn)行標(biāo)明和替換。
  • 不能使用 static_cast 在有類型指針內(nèi)轉(zhuǎn)換。

dynamic_cast

(1) 使用場景

  • 用于將一個父類的指針/引用轉(zhuǎn)化為子類的指針/引用(下行轉(zhuǎn)換)

(2) 使用特點

  • 基類必須要有虛函數(shù),因為 dynamic_cast 是運行時類型檢查,需要運行時類型信息,而這個信息是存儲在類的虛函數(shù)表中。
  • 對于下行轉(zhuǎn)換,dynamic_cast 是安全的(當(dāng)類型不一致時,轉(zhuǎn)換過來的是空指針),而 static_cast 是不安全的。
  • 對指針進(jìn)行 dynamic_cast,失敗返回 NULL,成功返回正常 cast 后的對象指針;對引用進(jìn)行 dynamic_cast,失敗拋出一個異常,成功返回正常 cast 后的對象引用。

const_cast

(1) 使用場景

  • 常量指針(或引用)與非常量指針(或引用)之間的轉(zhuǎn)換。

(2) 使用特點

  • cosnt_cast 是四種類型轉(zhuǎn)換符中唯一可以對常量進(jìn)行操作的轉(zhuǎn)換符。
  • 去除常量性是一個危險的動作,盡量避免使用。

reinterpret_cast

(1) 使用場景

  • 用在任意指針(或引用)類型之間的轉(zhuǎn)換。
  • 能夠?qū)⒄娃D(zhuǎn)換為指針,也可以把指針轉(zhuǎn)換為整型或數(shù)組。

(2) 使用特點

  • reinterpret_cast 是從底層對數(shù)據(jù)進(jìn)行重新解釋,依賴具體的平臺,可移植性差。不到萬不得已,不用使用這個轉(zhuǎn)換符,高危操作

示例程序

#include <iostream>namespace staticCast{
/*** @brief static_cast的使用場景* 1. 使用static_cast在基本數(shù)據(jù)類型之間轉(zhuǎn)換* 2. 使用static_cast在有類型指針與void *之間轉(zhuǎn)換* 3. 用于類層次結(jié)構(gòu)中基類和派生類之間指針或引用的轉(zhuǎn)換*/class CBase // 基類(父類)
{};class CDerived : public CBase  // 派生類(子類)
{};int useof_static_cast()
{// 1. 使用static_cast在基本數(shù)據(jù)類型之間轉(zhuǎn)換float fval = 10.12;int ival = static_cast<int>(fval);  // float --> intstd::cout << ival << std::endl;  // out: 10// 2. 使用static_cast在有類型指針與void *之間轉(zhuǎn)換int *intp = &ival;void *voidp = static_cast<void *>(intp); // int* --> void*// cout << *voidp << endl; // error,voidp的大小未知long *longp = static_cast<long *>(voidp);std::cout << *longp << std::endl; // out: 10// 3. 用于類層次結(jié)構(gòu)中基類和派生類之間指針或引用的轉(zhuǎn)換// 上行轉(zhuǎn)換(派生類---->基類)是安全的CDerived *tCDerived1 = nullptr;CBase *tCBase1 = static_cast<CBase*>(tCDerived1);// 下行轉(zhuǎn)換(基類---- > 派生類)由于沒有動態(tài)類型檢查,所以是不安全的CBase *tCBase2 = nullptr;CDerived *tCDerived2 = static_cast<CDerived*>(tCBase2); //不會報錯,但是不安全// 4. 不能使用static_cast在有類型指針內(nèi)轉(zhuǎn)換float *floatp = &fval;  //10.12的addr//int *intp1 = static_cast<int *>(floatp); // error,不能使用static_cast在有類型指針內(nèi)轉(zhuǎn)換std::cout << *floatp << std::endl;    // out: 10.12
}
}// namespace staticCastnamespace dynamicCast{/*** @brief dynamic_cast使用* 1. 用于將一個父類的指針/引用轉(zhuǎn)化為子類的指針/引用(下行轉(zhuǎn)換)* 2. 當(dāng)某個成員函數(shù)只在子類中存在,父類指針指向子類對象。此時該指針想要使用子類的成員函數(shù),需要將父類指針轉(zhuǎn)換為子類指針*/
class CBase    // 基類(父類)
{
public:// dynamic_cast在將父類cast到子類時,父類必須要有虛函數(shù)virtual int test() { return 0; } // 一定要是 virtual
};class CDerived : public CBase  // 派生類(子類)
{
public:int test() { return 1; }
};int useof_dynamic_cast()
{CBase *p_CBase = new CBase;  // 基類對象指針CDerived *p_CDerived = dynamic_cast<CDerived *>(p_CBase);  // 將基類對象指針類型轉(zhuǎn)換為派生類對象指針CBase i_CBase;    // 創(chuàng)建基類對象CBase &r_CBase = i_CBase;    // 基類對象的引用CDerived &r_CDerived = dynamic_cast<CDerived &>(r_CBase);  // 將基類對象的引用轉(zhuǎn)換派生類對象的引用
}
} //namespace dynamicCastnamespace constCast
{
/*** @brief const_cast的使用* **/
int useof_const_cast()
{int value = 100;const int *cpi = &value; // 定義一個常量指針//*cpi = 200;   // 不能通過常量指針修改值// 1. 將常量指針轉(zhuǎn)換為非常量指針,然后可以修改常量指針指向變量的值int *pi = const_cast<int *>(cpi);*pi = 200;// 2. 將非常量指針轉(zhuǎn)換為常量指針const int *cpi2 = const_cast<const int *>(pi); // *cpi2 = 300;  //已經(jīng)是常量指針const int value1 = 500;const int &c_value1 = value1; // 定義一個常量引用// 3. 將常量引用轉(zhuǎn)換為非常量引用int &r_value1 = const_cast<int &>(c_value1);// 4. 將非常量引用轉(zhuǎn)換為常量引用const int &c_value2 = const_cast<const int &>(r_value1);
}  
} // namespace constCastnamespace reinterpretCast
{
int useof_reinterpret_cast()
{int value = 100;// 1. 用在任意指針(或引用)類型之間的轉(zhuǎn)換double *pd = reinterpret_cast<double *>(&value);std::cout << "*pd = " << *pd << std::endl;// 2. reinterpret_cast能夠?qū)⒅羔樦缔D(zhuǎn)化為整形值int *pv = &value;int pvaddr = reinterpret_cast<int>(pv);std::cout << "pvaddr = " << pvaddr << std::endl;std::cout << "pv = " << pv << std::endl;
}} // namespaceCastint main(int argc, char* argv[])
{staticCast::useof_static_cast();dynamicCast::useof_dynamic_cast();constCast::useof_const_cast();reinterpretCast::useof_reinterpret_cast();
}
http://m.aloenet.com.cn/news/35255.html

相關(guān)文章:

  • 做照片相冊最好的網(wǎng)站培訓(xùn)機構(gòu)需要什么資質(zhì)
  • 福田網(wǎng)站制作一鍵優(yōu)化軟件
  • 開發(fā)網(wǎng)站需要用到的專業(yè)技術(shù)知識地推的方法和技巧
  • 網(wǎng)站模版怎么編輯器我想做app推廣代理
  • 生產(chǎn)企業(yè)網(wǎng)站有哪些應(yīng)用商店aso優(yōu)化
  • 網(wǎng)站公安局備案一般多久今日軍事新聞熱點事件
  • 松崗做網(wǎng)站今日頭條新聞最全新消息
  • 做一手房做那個網(wǎng)站好搜索引擎推廣是什么意思
  • 北京企業(yè)網(wǎng)站設(shè)計長春關(guān)鍵詞優(yōu)化平臺
  • 加強黨建網(wǎng)站建設(shè)問題研究濰坊seo建站
  • 適合網(wǎng)站設(shè)計的gif圖片四年級新聞?wù)笕?/a>
  • 什么網(wǎng)站做批發(fā)零食的很多怎么在百度做免費推廣
  • 夫妻找做伙食飯工作哪個網(wǎng)站好網(wǎng)頁制作軟件
  • 自網(wǎng)站EXCel數(shù)據(jù)導(dǎo)入怎么做你就知道首頁
  • 網(wǎng)站如何實現(xiàn)微杭州網(wǎng)站推廣與優(yōu)化
  • 做外貿(mào)可以在哪些網(wǎng)站注冊寧波seo入門教程
  • 沈陽網(wǎng)站優(yōu)化排名網(wǎng)站聯(lián)盟營銷
  • 外包網(wǎng)站都有哪些網(wǎng)頁設(shè)計大作業(yè)
  • 博客網(wǎng)站開發(fā)視頻湘潭seo優(yōu)化
  • 網(wǎng)站沒收錄可以做排名阿里云域名注冊查詢
  • 網(wǎng)站排名快速提升百度指數(shù)移動版
  • b2c電商網(wǎng)站開發(fā)搜索引擎分析論文
  • 網(wǎng)站郵件發(fā)送功能怎么做查網(wǎng)站流量的網(wǎng)址
  • 秒火食品代理網(wǎng)seo扣費系統(tǒng)
  • 動態(tài)網(wǎng)站開發(fā)從入門到實踐今日要聞新聞
  • 怎么樣通過做網(wǎng)站賺錢嗎百度搜索推廣是什么
  • 專業(yè)邯鄲網(wǎng)站建設(shè)百度識圖軟件
  • 網(wǎng)站模版怎么做網(wǎng)絡(luò)營銷軟文范例500
  • 網(wǎng)絡(luò)推廣加盟項目怎么給網(wǎng)站做優(yōu)化
  • 手機怎么做三個視頻網(wǎng)站淘寶代運營公司十大排名