C開發人員的C 型別轉換

2021-10-05 19:33:29 字數 2815 閱讀 1032

型別轉換是使c ++具有更多型別安全性,更強大的功能,並且可以說服您在c上使用它。但是,當您是新手或從c背景移居時,這也是乙個被低估的主題。 因此,我想出了一篇關於它的文章。 在這裡,我們將不僅看到帶有c開發人員示例的c ++型別轉換,而且還將介紹為什麼我們需要型別轉換? & c ++型別的鑄造作弊**,c開發人員可以輕鬆記住和使用它。

儘管我不是專家,但是到目前為止,這是我從各種**和5年以上的行業經驗中學到的。

在c ++中,有5種不同型別的強制型別轉換:c樣式強制型別轉換,static_cast,const_cast,dynamic_cast和reinterpret_cast。

我通常以「我們為什麼需要它?」開頭,但是這一次我們首先快速了解一些術語,並以一些有關型別轉換的cpp核心指南結束本文。

隱式轉換:編譯器在其中自動進行型別轉換。 像float f = 3;一樣,在這裡編譯器不會抱怨,而是直接將整數型別3轉換為float並分配給f。

顯式轉換:開發人員使用強制轉換運算子指導轉換。 所有型別的手動轉換都屬於顯式型別轉換類別。 像int * p =(int *)std :: malloc(10);,這裡我們顯式將void *強制轉換為int *。

l-value:代表記憶體位置的識別符號。 例如,變數名,* ptr(ptr指向記憶體位置等)。

r值:不是l值的值,r值出現在賦值(=)運算子的右側。 喜歡

int a = 5 ; // 5 = r-value, 

q = p + 5 ; // p + 5 is r-value

class a ;

class b ;

int main ()

exit status 1

error: no viable conversion from 'b' to 'a'

a a = b;

^ ~

note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'b' to ' const a &' for 1st argument

class a {};

^note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'b' to 'a &&' for 1st argument

class a {};

^1 error generated.

class b  

};

int main ()  ;

class d : public b {};

class x ;

int main ()

1.忽略常數

int i = 0 ;

const int & ref = i;

const int * ptr = &i;

*ptr = 3 ; // not ok

const_cast < int &>(ref) = 3 ; //ok

* const_cast < int *>(ptr) = 3 ; //ok

2.使用const this指標修改資料成員

class x

void changeandprint ( int *temp)

};int main ()

3.將const引數傳遞給僅接受非const引數的函式

int fun ( int * ptr) 

int main ( void )

4.被拋棄的揮發性屬性

base* createrandom ()

base* base = createrandom();

derived1 *pd1 = dynamic_cast (base);

if (pd1)

error: static_cast from 'int *' to 'uintptr_t'

(aka 'unsigned long' ) is not allowed

uintptr_t ptr = static_cast < uintptr_t >(p);

^~~~~~~~~~~~~~~~~~~~~~~~~

1 error generated.

uintptr_t ptr = reinterpret_cast < uintptr_t >(p);

閱讀完所有這些內容後,您可能會混淆使用什麼以及何時使用! 這就是為什麼我建立了這個作弊**

注意:通常應避免使用const_castreinterpret_cast因為如果使用不正確,它們可能會有害。 除非您有充分的理由使用它們,否則不要使用它。

from:

IT開發人員

其路五 轉行到市場 絞盡腦汁的想想,我所知道的人之中只有兩個開發人員去了市場,這兩個人都不能說是朋友,認識而已。他們都是主動要求去了市場,結果是這兩個人均在市場都是乾到一年左右,然後都自已開公司了。呵呵,很奇怪,極高的轉行成功率!不過仔細想想,我對這兩個人的思路佩服的五體投地。能下決心仍掉每月5 6...

開發人員必讀

對於剛開始學習軟體開發的新人來說,必備技能 往往意味著乙個長長的 標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。本文嘗試列舉出最重要的幾個技能,也期望通過此列表能給新人乙個比較明確的學習重點和路徑。沒有掌握任何一門程式語言,就不可能成為一名程式設計人員。許多程式設計師...

開發人員的開發效率

影響開發效率的因素,總結有五大方面 任務不明確 流程不順暢 需求變更多 責任心不夠 能力有瓶頸。針對這些因素,分別可以從以下五個方面來優化和改進。制定清晰的規範尤其是開發規範。無規矩不成方圓。營造良好的團隊文化氛圍,人性化的管理方式。愉悅狀態下的工作效率遠遠高於抑鬱狀態下的效率。定期舉行技術分享交流...