欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ xxx_cast實(shí)現(xiàn)轉(zhuǎn)換代碼實(shí)例解析

 更新時(shí)間:2020年07月24日 09:45:02   作者:Cucucu  
這篇文章主要介紹了C++xxx_cast轉(zhuǎn)換代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1.1 static_cast

  static_cast可以在一個(gè)方向上實(shí)現(xiàn)隱式轉(zhuǎn)換,在另一個(gè)方向上實(shí)現(xiàn)靜態(tài)轉(zhuǎn)換。其適用于單隱和雙隱兩種情況。

雙隱

    雙隱即兩邊都可以直接進(jìn)行隱式轉(zhuǎn)換,適用于一般類型的數(shù)據(jù)轉(zhuǎn)換(如int, float, double, long等數(shù)據(jù)類型之間的轉(zhuǎn)換)

單隱

    單隱即只能在一個(gè)方向上進(jìn)行隱式轉(zhuǎn)換,在另一個(gè)方向上只能實(shí)現(xiàn)靜態(tài)轉(zhuǎn)換。(如void* 和指針之間的轉(zhuǎn)換,任意類型的指針可以轉(zhuǎn)換為void*,但是void*不能轉(zhuǎn)換為任意類型的指針,因此將void*轉(zhuǎn)換為任意類型的指針時(shí)就需要調(diào)用靜態(tài)轉(zhuǎn)換)

//首先要驗(yàn)證的是static_cast,其可以實(shí)現(xiàn)在一個(gè)方向上做隱式轉(zhuǎn)換,另一個(gè)方向上做靜態(tài)轉(zhuǎn)換,可以適用于單隱和雙隱兩種情況

  //首先是雙隱,也就是兩邊都能直接進(jìn)行隱式轉(zhuǎn)換,一般適用于基本數(shù)據(jù)類型,如
  int a = 4;
  double b = 3.2;
  a = b;
  b = a;
  cout << a << endl;
  cout << b << endl;
  a = static_cast<int> (b);
  b = static_cast<double> (a);

  //然后是單隱,也就是說,只能從一遍到另一邊進(jìn)行隱式轉(zhuǎn)換
  //任意類型的指針可以轉(zhuǎn)換為void*,但是void*不能轉(zhuǎn)換為任意類型的指針
  void* p = &b;
  int* q = &a;
  p = q;
  q = static_cast<int*>(p);

1.2 reinterpret_cast

  reinterpret_cast“通常為操作數(shù)的位模式提供較底層的重新解釋”-->也就是說將數(shù)據(jù)以二進(jìn)制的形式重新解釋,在雙方向上都不可以隱式類型轉(zhuǎn)換的,則需要重新類型轉(zhuǎn)換。可以實(shí)現(xiàn)雙不隱的情況,如int轉(zhuǎn)指針,指針轉(zhuǎn)int等。

//雙不隱
  int *m=&a;
  int n=4;
  m = reinterpret_cast<int*>(n);
  n = reinterpret_cast<int>(m);

1.3 const_cast

  Const_cast可用來移除非const對(duì)象的引用或指針的常量性。其可以將const變量轉(zhuǎn)換為非const變量。其可以用于去除指針和引用的const,const_cast是對(duì)const的語義補(bǔ)充。其目標(biāo)類型只能是引用或指針。

  非const對(duì)象 --> const引用或指針 --> 脫const --> 修改非const對(duì)象

//const_cast-->用于去除非const對(duì)象的const,用于指針和引用
  /************ 第一種情況,去引用的const化 ************/
  int aa;
  const int& ra = aa;
  aa = 100;
  cout << aa << endl;
  cout << ra << endl;
  //ra = 200;//這樣是錯(cuò)誤的,因?yàn)閞a是const,要實(shí)現(xiàn)ra的修改,必須去const化
  const_cast<int&> (ra) = 300;
  cout << aa << endl;
  cout << ra << endl;

  /************ 第二種情況,去指針的const化 ************/
  const int* pp = &a;
  //*p = 200;//這樣是錯(cuò)誤的,因?yàn)橹羔榩是const類型,要實(shí)現(xiàn)p的修改,必須去const化
  *const_cast<int*>(pp) = 500;
  cout << *pp << endl;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對(duì)C語言編程標(biāo)準(zhǔn)以及聲明的基本理解

    對(duì)C語言編程標(biāo)準(zhǔn)以及聲明的基本理解

    這篇文章主要介紹了對(duì)C語言編程標(biāo)準(zhǔn)以及聲明的基本理解,有助于對(duì)C語言編寫時(shí)的結(jié)構(gòu)有更加清晰的認(rèn)識(shí),需要的朋友可以參考下
    2015-11-11
  • C 語言簡(jiǎn)單加減乘除運(yùn)算

    C 語言簡(jiǎn)單加減乘除運(yùn)算

    本篇文章主要介紹了C語言的基本運(yùn)算方法,這里對(duì)加法,減法,乘法,除法,求余數(shù),做了詳細(xì)講解,有需要的朋友可以參考下
    2016-07-07
  • C語言實(shí)現(xiàn)日期和時(shí)間處理的常用函數(shù)總結(jié)

    C語言實(shí)現(xiàn)日期和時(shí)間處理的常用函數(shù)總結(jié)

    在C語言中,時(shí)間和日期處理是一項(xiàng)非常基礎(chǔ)的技能,也是開發(fā)實(shí)際應(yīng)用程序時(shí)經(jīng)常會(huì)用到的功能,本文為大家總結(jié)了C語言中一些常用的時(shí)間庫(kù)函數(shù),希望對(duì)大家有所幫助
    2023-06-06
  • C語言改造通訊錄操作詳解

    C語言改造通訊錄操作詳解

    這篇文章主要介紹了C語言文件操作改造通訊錄方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • c語言獲取當(dāng)前工作路徑的實(shí)現(xiàn)代碼(windows/linux)

    c語言獲取當(dāng)前工作路徑的實(shí)現(xiàn)代碼(windows/linux)

    這篇文章主要介紹了c語言獲取當(dāng)前工作路徑的實(shí)現(xiàn)代碼(windows/linux),需要的朋友可以參考下
    2017-09-09
  • c++快速排序詳解

    c++快速排序詳解

    快速排序總體思想:先找到一個(gè)樞軸,讓他作為分水嶺,通過一趟排序?qū)⒋判虻挠涗浄指畛蓛刹糠?前面一部分都比樞軸小,后面一部分樞軸大,然后又分別對(duì)這兩部分記錄繼續(xù)進(jìn)行遞歸的排序,達(dá)到整個(gè)序列有序的目的
    2017-05-05
  • 詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    詳解C/C++高精度(加減乘除)算法中的壓位優(yōu)化

    在高精度計(jì)算中數(shù)組的每個(gè)元素存儲(chǔ)一位10進(jìn)制的數(shù)字,這樣的存儲(chǔ)方式并不是最優(yōu)的,32位的整型其實(shí)至少可以存儲(chǔ)9位高精度數(shù)字,數(shù)組元素存儲(chǔ)更多的位數(shù)就是壓位優(yōu)化。本文將展示壓位優(yōu)化的原理以及壓9位的實(shí)現(xiàn)和性能對(duì)比,需要的可以參考一下
    2023-01-01
  • C++中靜態(tài)初始化數(shù)組與動(dòng)態(tài)初始化數(shù)組詳解

    C++中靜態(tài)初始化數(shù)組與動(dòng)態(tài)初始化數(shù)組詳解

    今天小編就為大家分享一篇C++中靜態(tài)初始化數(shù)組與動(dòng)態(tài)初始化數(shù)組詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 如何在程序中判斷VS的版本(實(shí)現(xiàn)方法詳解)

    如何在程序中判斷VS的版本(實(shí)現(xiàn)方法詳解)

    下面小編就為大家?guī)硪黄绾卧诔绦蛑信袛郪S的版本(實(shí)現(xiàn)方法詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • C++的get()函數(shù)與getline()函數(shù)使用詳解

    C++的get()函數(shù)與getline()函數(shù)使用詳解

    這篇文章主要介紹了C++的get()函數(shù)與getline()函數(shù)使用詳解,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09

最新評(píng)論