日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

《C++覆辙录》——1.9:使用糟糕的语言

發(fā)布時(shí)間:2025/5/22 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《C++覆辙录》——1.9:使用糟糕的语言 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要:?本節(jié)書(shū)摘來(lái)自異步社區(qū)出版社《C++覆轍錄》一書(shū)中的第1章,第1.9節(jié),作者: 【美】Stephen C. Dewhurst(史蒂芬 C. 杜赫斯特),更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“異步社區(qū)”公眾號(hào)查看。

本節(jié)書(shū)摘來(lái)自異步社區(qū)出版社《C++覆轍錄》一書(shū)中的第1章,第1.9節(jié),作者: 【美】Stephen C. Dewhurst(史蒂芬 C. 杜赫斯特),更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“異步社區(qū)”公眾號(hào)查看。

1.9:使用糟糕的語(yǔ)言

當(dāng)一個(gè)更大的世界入侵了C++社群原本悠然自得的樂(lè)土之時(shí),它們帶來(lái)了一些足堪天譴的語(yǔ)言和編碼實(shí)踐。本節(jié)乃是為了厘清返璞歸真的C++語(yǔ)言所使用的正確適當(dāng)、堪稱典范之用語(yǔ)和行為。

用語(yǔ)
表1-1列出了最常見(jiàn)的用語(yǔ)錯(cuò)誤,以及它們對(duì)應(yīng)的正確形式。

表1-1 常見(jiàn)用語(yǔ)錯(cuò)誤及其對(duì)應(yīng)正確用語(yǔ)

沒(méi)有什么所謂“純虛基類”。純虛函數(shù)是有的,而包含有或是未能改寫(xiě)(override)此種函數(shù)的類,我們并不叫它“純虛基類”,而是叫它“抽象類”。

C++語(yǔ)言中是沒(méi)有“方法”的。Java和Smalltalk里才有方法一說(shuō)。當(dāng)你頗帶著一絲自命不凡地就面向?qū)ο蟮脑掝}侃侃而談之時(shí),你可能使用像“消息”和“方法”這種用語(yǔ)。但如果你開(kāi)始腳踏實(shí)地,開(kāi)始討論你的設(shè)計(jì)對(duì)應(yīng)的C++實(shí)現(xiàn)時(shí),最好還是使用“函數(shù)調(diào)用”或“成員函數(shù)”來(lái)表達(dá)。

還有一些不足為信的C++專家(是在說(shuō)你嗎?)使用“destructed”作為“constructed”的對(duì)應(yīng)詞。這明顯是英語(yǔ)沒(méi)學(xué)好35,正確的對(duì)應(yīng)詞是“destroyed”。

C++ 語(yǔ)言中確實(shí)有強(qiáng)制型別轉(zhuǎn)換(或曰型別轉(zhuǎn)換)運(yùn)算符——事實(shí)上只有4個(gè)(static_cast、dynamic_cast、const_cast以及reinterpret_cast)。遺憾的是,“強(qiáng)制型別轉(zhuǎn)換運(yùn)算符”常常被不正確地用于表達(dá)“成員型別轉(zhuǎn)換運(yùn)算符”,而后者指定了某種對(duì)象何以被隱式地轉(zhuǎn)換到另外的型別。

class C {operator int *()const; // 成員型別轉(zhuǎn)換運(yùn)算符//... };``` 當(dāng)然用強(qiáng)制轉(zhuǎn)換運(yùn)算符來(lái)完成型別轉(zhuǎn)換的工作也是允許的,只要你不把用語(yǔ)搞混就成。請(qǐng)參見(jiàn)常見(jiàn)錯(cuò)誤31中有關(guān)“常量指針”和“指涉到常量的指針”的討論,以加深對(duì)本主題的理解。空指針 從前,當(dāng)軟件工程師使用預(yù)處理符號(hào)`NULL`來(lái)表示空指針時(shí),他會(huì)遭遇潛在的災(zāi)難:

void doIt( char * );?
void doIt( void * );?
C *cp = NULL;```
麻煩出在NULL這個(gè)符號(hào)在不同的平臺(tái)上,有很多種定義的方法:

#define NULL ((char *)0) #define NULL ((void *)0) #define NULL 0``` 這些各掃門(mén)前雪的不同定義嚴(yán)重?fù)p害了C++語(yǔ)言的可移植性:

doIt( NULL ); // 平臺(tái)相關(guān)抑或模棱兩可?
C *cp = NULL; // 錯(cuò)誤?``
事實(shí)上,在C++語(yǔ)言里是沒(méi)有辦法直接表示空指針的。但我們可以保證的是,數(shù)字字面常量0可以轉(zhuǎn)換成任何一種指針型別對(duì)應(yīng)的空指針。那也就是傳統(tǒng)的C++語(yǔ)言保證可移植性和正確性的用法36。現(xiàn)在,C++標(biāo)準(zhǔn)規(guī)定像(void *)0這樣的定義是不允許的37,可見(jiàn)這是個(gè)和NULL的使用并無(wú)多大干系的技術(shù)問(wèn)題(如若不然,NULL`豈不是成了格外受人青睞的預(yù)處理符號(hào)?其實(shí)它是普通不過(guò)的)。可是,真正領(lǐng)會(huì)了C++語(yǔ)言精神的軟件工程師仍然使用字面常量038。任何其他用法都會(huì)使你顯得相當(dāng)非主流。

縮略詞
C++軟件工程師都有縮略詞強(qiáng)迫癥,不過(guò)與管理層相比,可謂小巫見(jiàn)大巫。表1-2在你的同事給你來(lái)上一句“RVO將不會(huì)應(yīng)用到POD上,所以你最好自己寫(xiě)個(gè)自定義的復(fù)制ctor”時(shí)能派上用場(chǎng)。

表1-2 常用縮略詞的意思

用云棲社區(qū)APP,舒服~

【云棲快訊】快速解決數(shù)據(jù)庫(kù)難題,云數(shù)據(jù)庫(kù)經(jīng)典案例及最佳實(shí)踐直播專場(chǎng)!阿里云數(shù)據(jù)庫(kù)專家團(tuán)隊(duì)成員傾囊相授!趕緊報(bào)名 原文鏈接

轉(zhuǎn)載于:https://www.cnblogs.com/jzy996492849/p/6934276.html

總結(jié)

以上是生活随笔為你收集整理的《C++覆辙录》——1.9:使用糟糕的语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。