c++常見的四種強制型別轉換有哪些?
常見的型別轉換是在要轉換的型別前面加上括號和要轉換的型別。
這樣就有乙個規則即像站姿結束多的自動轉換,例如int型別和float相加時,結果自動轉換為float型別。
例如
int *a=1;char *p = (char*)a;
以上這種形式是c語言的形式,如果換做c++的話常用的形式如下:
int *a=1;char *p=cahr*(a);
也就是說他是會把待轉換的用括號括起來。也樣就像是呼叫函式一樣。
請看下面例項
int data = ;char* pch=(char*)(&data);
char ch = char (data);
這些在c語言中都是合理的。但是這樣做給人的感覺很鬆散。於是c++的傳世人增加了四種強制型別轉化符即
static_casedynamic_case
const_case
reinterpret_case
形式如下
static_case(expression)
dynamic_case
(expression)
const_case
(expression)
reinterpret_case
(expression)
dynamic_case:假設有a,b兩個類,*a,*b分別是兩個類的指標。則僅當b是a的可訪問的基類是下面語句才有效
b=dynamic_casea;
才有效。也就是小型別像大型別轉換,就像int和float相加結果為float型別一樣。
const_case:意義是將const修飾的不可變的物件變成可變的volatile物件。但是並不是萬能的,例如使用const_case修改了乙個指標,則修改的const值得結果卻是不確定的。
static_case :只有當type-name可隱式轉換為expression或者expression可隱式轉換為type-name時,才可使用。
最後乙個不常用
面試過程中
面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...
面試過程中遇到的演算法題 二
面試過程中遇到的演算法題記錄 有乙個字元陣列,找出陣列中,長度最長的前兩個 示例 a abcd ab ads 輸出abcd,ads 如下 示例 from typing import list class arry def arryone self,nums list str l len nums f...
面試過程中 訊息佇列相關問題總結
在實際專案中是否用過訊息佇列?這裡簡單介紹一下redis訊息佇列吧,之前有乙個服務號訊息推送就是用的redis來做的,因為業務比較單一所以就拿redis來做 第一步 建立推送任務 1.區分任務是即時任務還是延時任務 2.如果是延時任務可以使用zset key,time,val 因為zset 是有序列...