乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C++|變量的類(lèi)型系統(tǒng)和屬性

       thchen0103 2019-08-24

      變量是一個(gè)內(nèi)存單元的命名以及對(duì)應(yīng)的一段比特的編碼和解碼,涉及到數(shù)據(jù)類(lèi)型、存儲(chǔ)屬性。

      變量的數(shù)據(jù)類(lèi)型是所有編程語(yǔ)言都需要考慮的語(yǔ)法特征。區(qū)別在于數(shù)據(jù)類(lèi)型檢查與推斷是發(fā)生在編譯期還是運(yùn)行期,前者特性的編程語(yǔ)言一般稱(chēng)為靜態(tài)類(lèi)型語(yǔ)言,后者特性的編程語(yǔ)言一般稱(chēng)之為動(dòng)態(tài)類(lèi)型語(yǔ)言。

      靜態(tài)類(lèi)型編程語(yǔ)言一般要求在編譯期檢查類(lèi)型的安全性,可以實(shí)現(xiàn)錯(cuò)誤的早期發(fā)現(xiàn)機(jī)制,一定程度上提高了程序的嚴(yán)謹(jǐn)性,代碼的健壯性和運(yùn)行的效率,為此對(duì)于變量的要求是先聲明后使用。靜態(tài)的語(yǔ)義解釋可以以空間換時(shí)間,可以有靜態(tài)優(yōu)化。

      1 數(shù)據(jù)類(lèi)型的表達(dá)規(guī)則

      數(shù)據(jù)類(lèi)型的表達(dá)規(guī)則包括內(nèi)存布局與格式的內(nèi)存表達(dá),使用內(nèi)存單元的字節(jié)(byte)數(shù)量,以及編碼和解碼規(guī)則,同時(shí)也確定了數(shù)據(jù)類(lèi)型的值域。

      對(duì)于自定義類(lèi)型,其數(shù)據(jù)成員在內(nèi)存中連續(xù)存儲(chǔ),并按內(nèi)存對(duì)齊規(guī)則進(jìn)行對(duì)齊。

      2 數(shù)據(jù)類(lèi)型的操作規(guī)則

      基本數(shù)據(jù)類(lèi)型的操作規(guī)則通過(guò)上下文的操作符來(lái)定義,操作符也相當(dāng)于一個(gè)特殊的函數(shù),操作符有一元操作符、二元操作符和三元操作符,相當(dāng)于特殊函數(shù)的參數(shù)數(shù)量。

      2.1 算子(操作數(shù));

      2.2 溢出規(guī)則;

      2.3 異常處理規(guī)則;

      對(duì)于自定義類(lèi)型,操作規(guī)則由成員函數(shù)來(lái)定義,或者重載操作符(也是特殊的成員函數(shù))來(lái)定義。

      3 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換規(guī)則

      當(dāng)聲明、定義和初始化了一個(gè)變量時(shí),也就是對(duì)其值按類(lèi)型規(guī)則進(jìn)行編碼并對(duì)內(nèi)存的比特進(jìn)行初始化后,該比特串就可以按編碼規(guī)則解碼為對(duì)應(yīng)類(lèi)型的數(shù)據(jù),如果想解碼為其他類(lèi)型,也就是所謂的類(lèi)型轉(zhuǎn)換,C++編譯器必須定義相應(yīng)的轉(zhuǎn)換規(guī)則,如浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù)的小數(shù)點(diǎn)舍去規(guī)則等。

      包括C風(fēng)格的強(qiáng)制類(lèi)型轉(zhuǎn)換,C++的static_cast、dynamic_cast、reinterpret_cast。

      4 模板支持

      C++支持函數(shù)模板和類(lèi)模板來(lái)實(shí)現(xiàn)數(shù)據(jù)類(lèi)型的泛化,函數(shù)模板調(diào)用時(shí),可以進(jìn)行自動(dòng)類(lèi)型推斷。而類(lèi)模板需要使用基本類(lèi)型進(jìn)行類(lèi)的實(shí)例化。

      5 變量的存儲(chǔ)屬性和作用域、生命期、鏈接性

      在C++中,程序可以是多文件程序,先編譯,后鏈接,所以對(duì)于跨文件引用的全局變量,需要先用關(guān)鍵字extern聲明,告訴編譯期,這是一個(gè)在別外定義的全局變量。如果某一全局變量不想被跨文件使用,可以用static來(lái)修飾,限定其不能跨文件引用。在C++中,static除了空間使用(也就是鏈接性)的上下文,還有時(shí)間上的上下文,可以修飾為靜態(tài)變量,其生命期從聲明位置開(kāi)始,一直延續(xù)到程序結(jié)束。

      復(fù)合語(yǔ)句(或塊,包括函數(shù)語(yǔ)句塊)內(nèi)定義的變量稱(chēng)為局部變量,其作用域與生命期從聲明和定義位置開(kāi)始,到語(yǔ)句塊結(jié)束位置結(jié)束。局部變量在棧內(nèi)存區(qū)分配空間

      復(fù)合語(yǔ)句(或塊,包括函數(shù)語(yǔ)句塊)外定義的變量稱(chēng)為全局變量,其作用域與生命期從聲明和定義位置開(kāi)始,到程序結(jié)束時(shí)結(jié)束(也就是main函數(shù)結(jié)束時(shí))。全局變量根據(jù)是否有初始化而分配在內(nèi)存的全局\靜態(tài)數(shù)據(jù)區(qū)的數(shù)據(jù)段和BSS段。

      在C++中,可以在程序運(yùn)行期申請(qǐng)堆內(nèi)存,這樣的變量稱(chēng)為動(dòng)態(tài)變量,一般使用指針申請(qǐng),申請(qǐng)使用完后需手工釋放堆內(nèi)存,釋放內(nèi)存的操作并沒(méi)有改變?cè)兄羔樀闹赶颍瑸榱吮苊忮e(cuò)誤,建議的做法是將指針更新為NULL。

      所以存儲(chǔ)屬性及在內(nèi)存中的區(qū)域與變量聲明和定義時(shí)使用的存儲(chǔ)屬性關(guān)鍵字和聲明的位置有關(guān)。

      6 變量的類(lèi)型修正符modifier

      在C++中,變量的聲明和定義除了使用存儲(chǔ)屬性關(guān)鍵字、類(lèi)型聲明以外,還可以使用類(lèi)型修正符,對(duì)原型進(jìn)行一些修改和限制。

      C++使用const、volatile和mutable三個(gè)類(lèi)型修正符。

      7 變量的聲明與定義

      在C++中,變量定義時(shí)要求聲明數(shù)據(jù)類(lèi)型,會(huì)分配內(nèi)存空間,所以變量的定義同時(shí)也是聲明。在C++中單獨(dú)的聲明只有使用extern的情形,如extern int var;分兩種情況,一是extern int var;處于局部作用域,但在此后的全局作用域中,有var定義:int var; 另外一種情形是extern int var;聲明在全局作用域中,表示在其它文件的全局作用域中有int var;的定義。另外,對(duì)于函數(shù)的形參,也可以理解為一種函數(shù)參數(shù)局部作用域的聲明。

      需要注意的是,自定義的結(jié)構(gòu)類(lèi)型也有聲明與定義,如類(lèi)類(lèi)型,當(dāng)涉及到類(lèi)A的數(shù)據(jù)成員有類(lèi)B的變量,當(dāng)類(lèi)B未定義時(shí),可以先聲明類(lèi)B,再定義類(lèi)A和類(lèi)B。此后便可以聲明和定義類(lèi)A或類(lèi)B的變量(或稱(chēng)為實(shí)例、對(duì)象)。

      8 變量的值語(yǔ)義

      變量的地址屬性和值屬性可以理解為左值和右值。

      變量的值語(yǔ)義可以做為函數(shù)的形參與實(shí)參,作為函數(shù)的函數(shù)返回值。當(dāng)形參用實(shí)參來(lái)初始化,函數(shù)返回指定類(lèi)型時(shí),可能存在隱式類(lèi)型轉(zhuǎn)換。

      值語(yǔ)義用于函數(shù)的入?yún)⒑头祷刂悼赡茉斐纱罅康呐R時(shí)變量和冗余拷貝。

      9 變量的自洽性

      變量的自洽性是指變量的生命周期是獨(dú)立的、可控的、不受外部環(huán)境影響的。因此自洽的變量很容易被持久化。

      一個(gè)變量的自洽性滿(mǎn)足下列的四個(gè)條件

      9.1 具有值語(yǔ)義;

      9.2 具有獨(dú)立的生命周期;

      9.3 可以輕易地被持久化;

      9.4 可以在不同的系統(tǒng)中等價(jià)地存在;

      10 變量的總分性

      變量的總分性是指一個(gè)變量不僅是獨(dú)立的變量,還是其他變量的成員變量,如結(jié)構(gòu)體和類(lèi)類(lèi)型的變量與其成員變量。

      11 變量的多態(tài)性

      基類(lèi)指針變量的多態(tài)性,用于類(lèi)在繼承關(guān)系中的虛函數(shù)的動(dòng)態(tài)重載。

      12 臨時(shí)變量

      在計(jì)算機(jī)程序的計(jì)算過(guò)程中,中間結(jié)果往往是由臨時(shí)變量來(lái)存儲(chǔ)的。

      字符串字面量做右值時(shí)也會(huì)產(chǎn)生一個(gè)臨時(shí)變量。

      函數(shù)是可以將臨時(shí)變量的值作為返回值的,同時(shí),在類(lèi)類(lèi)型中重載賦值運(yùn)算符后使用賦值運(yùn)算符時(shí),右值會(huì)產(chǎn)生一個(gè)臨時(shí)對(duì)象。

      -End-

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多