[初學C++]C++基于C增強

【1】“實用用性”增強

C語言中的變量都必須在作用域開始的位置定義!!
C++中更強調(diào)語言的“實用性”峦耘,所有的變量都可以在需要使用時再定義。

【2】 變量檢測增強

在C語言中旅薄,重復(fù)定義多個同名的全局變量是合法的
在C++中辅髓,不允許定義多個同名的全局變量
C語言中多個同名的全局變量最終會被鏈接到全局數(shù)據(jù)區(qū)的同?一個地址空間上
int g_var;
int g_var = 1;
C++直接拒絕這種?二義性的做法。

【3】struct 類型增強

C語言的struct定義了?一組變量的集合少梁,C編譯器并不認為這是?一種新的類型
C++中的struct是?一個新類型的定義聲明

【4】C++中所有變量和函數(shù)都必須有類型

C++中所有的變量和函數(shù)都必須有類型
C語言中的默認類型在C++中是不合法的
在C語言中
int f( )洛口;表示返回值為int,接受任意參數(shù)的函數(shù)
int f(void)凯沪;表示返回值為int的無參函數(shù)
在C++中
int f( );和int f(void)具有相同的意義第焰,都表示返回值為int的無參函數(shù)
C++更加強調(diào)類型,任意的程序元素都必須顯示指明類型

【5】新增bool類型關(guān)鍵字

C++在C語言的基本類型系統(tǒng)之上增加了bool
C++中的bool可取的值只有true和false
理論上bool只占用?一個字節(jié)妨马, 如果多個bool變量定義在?一起挺举,
可能會各占?一個bit,這取決于編譯器的實現(xiàn)
true代表真值烘跺,編譯器內(nèi)部用1來表?示
false代表?非真值湘纵,編譯器內(nèi)部用0來表?示
bool類型只有true(?非0)和false(0)兩個值
C++編譯器會在賦值時將?非0值轉(zhuǎn)換為true,0值轉(zhuǎn)換為false

【6】 三目運算符功能增強

  1. C語言返回變量的值 C++語言是返回變量本身
    C語言中的三目運算符返回的是變量值滤淳,不能作為左值使用
    C++中的三目運算符可直接返回變量本身梧喷,因此可以出現(xiàn)在程序的任何地方
  2. 注意:三目運算符可能返回的值中如果有一個是常量值,則不能作為左值使用 (a < b ? 1 : b )= 30;
  3. C語言如何支持類似C++的特性呢脖咐?
    當左值的條件:要有內(nèi)存空間伤柄;C++編譯器幫助程序員取了一個地址而已,c可如下 *(a < b ? &a : &b )= 30;

【7】 const增強

  1. const為給讀代碼的人傳達非常有用的信息文搂,實際上适刀,聲明一個參數(shù)為常量是為了告訴了用戶這個參數(shù)的應(yīng)用目的。
  2. 通過給優(yōu)化器一些附加的信息煤蹭,使用關(guān)鍵字 const 也許能產(chǎn)生更緊湊的代碼笔喉。
  3. 合理地使用關(guān)鍵字 const 可以使編譯器很自然地保護那些不希望被改變的參數(shù)取视,防止其被無意的代碼修改。簡而言之常挚,這樣可以減少 bug 的出現(xiàn)
    C++中的const常量類似于宏定義
    const int c = 5; ≈ #define c 5
    C++中的const常量與宏定義不同

const常量是由編譯器處理的作谭,提供類型檢查和作用域檢查
宏定義由預(yù)處理器處理,單純的文本替換

C++中的const修飾的奄毡,是一個真正的常量折欠,而不是C中變量(只讀)。在const修飾的常量編譯期間吼过,就已經(jīng)確定下來了

C語言中的const變量是只讀變量锐秦,有自己的存儲空間
C++中的const常量可能分配存儲空間,也可能不分配存儲空間
當const常量為全局,并且需要在其它文件中使用盗忱,會分配存儲空間
當使用&操作符酱床,取const常量的地址時,會分配存儲空間
當const int &a = 10; const修飾引用時趟佃,也會分配存儲空間
【問題】:那有如何解釋取地址扇谣,編譯過程中若發(fā)現(xiàn)對const使用了extern或者&操作符,則給對應(yīng)的常量分配存儲空間(為了兼容C)闲昭。C++編譯器雖然可能為const常量分配空間(進行&運算時候)罐寨,但不會使用其存儲空間中的值。

【8】 真正的枚舉

C語言中枚舉本質(zhì)就是整型,枚舉變量可以用任意整型賦值序矩。而C++中枚舉變量, 只能用被枚舉出來的元素初始化衩茸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贮泞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幔烛,老刑警劉巖啃擦,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饿悬,居然都是意外死亡令蛉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門狡恬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來珠叔,“玉大人,你說我怎么就攤上這事弟劲〉话玻” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵兔乞,是天一觀的道長汇鞭。 經(jīng)常有香客問我凉唐,道長,這世上最難降的妖魔是什么霍骄? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任台囱,我火速辦了婚禮,結(jié)果婚禮上读整,老公的妹妹穿的比我還像新娘簿训。我一直安慰自己,他們只是感情好米间,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布强品。 她就那樣靜靜地躺著,像睡著了一般车伞。 火紅的嫁衣襯著肌膚如雪择懂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天另玖,我揣著相機與錄音困曙,去河邊找鬼。 笑死谦去,一個胖子當著我的面吹牛慷丽,可吹牛的內(nèi)容都是我干的窃蹋。 我是一名探鬼主播锡垄,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碾盟!你這毒婦竟也來了妆丘?” 一聲冷哼從身側(cè)響起锄俄,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勺拣,沒想到半個月后奶赠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡药有,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年毅戈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愤惰。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡苇经,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宦言,到底是詐尸還是另有隱情扇单,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布奠旺,位于F島的核電站令花,受9級特大地震影響阻桅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兼都,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一嫂沉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扮碧,春花似錦趟章、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赖淤,卻和暖如春蜀漆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咱旱。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工确丢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吐限。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓鲜侥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诸典。 傳聞我的和親對象是個殘疾皇子描函,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容