- 相關(guān)推薦
C/C++面試?缄P(guān)鍵字
導(dǎo)語:結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。下面就由小編為大家介紹一下C/C++面試?缄P(guān)鍵字,歡迎大家閱讀!
C/C++面試?缄P(guān)鍵字總結(jié):
1.static關(guān)鍵字的作用?
1)、static 申明的變量為靜態(tài)全局變量,該變量存儲在靜態(tài)數(shù)據(jù)區(qū),當(dāng)整個(gè)程序結(jié)束時(shí)該變量才會被釋放,只是生命周期延長,作用域不受影響。
2)、static申明的變量定義時(shí)如果不初始化默認(rèn)初始化為0
3)、被static修飾的變量只能作用于本文件內(nèi),即使被extern修飾也不行
2.const,define的區(qū)別
1)、const修飾的變量為只讀變量,定義一個(gè)const類型的變量時(shí)必須完成初始化
2)、define意為宏定義一個(gè)常量,給某個(gè)命名變量宏定義一個(gè)確定的數(shù)值,在預(yù)編譯期間將會完成一個(gè)替換的動(dòng)作,用宏定義的值替換給變量名。
3)、const也可以修飾函數(shù)的參數(shù)列表以及函數(shù)的返回值,參數(shù)返回值被const修飾代表參數(shù)和返回值均不能被改變。
4)、const修飾的變量可以通過強(qiáng)制類型轉(zhuǎn)換轉(zhuǎn)為非const
5)、const修飾的成員變量只能在構(gòu)造函數(shù)的初始化列表進(jìn)行初始化。并且不能修改
6)、const修飾成員函數(shù),該成員函數(shù)不能修改任何成員變量的值
7)、const修飾對象:該對象中所有的成員都變成只讀,而且該對象的所以成員函數(shù)都必須被const修飾。
3.new/ ,malloc/free的區(qū)別
。1)new/ malloc/free都是用來動(dòng)態(tài)申請內(nèi)存空間的 ,兩組必須成對使用。
(2)new/為運(yùn)算符,malloc/free為庫函數(shù)需要頭文件
。3)new/為對象申請釋放內(nèi)存會調(diào)用相應(yīng)的構(gòu)造函數(shù)和析構(gòu)函數(shù) malloc/free則不會
(4)new有數(shù)據(jù)類型的檢查,是類型安全的,malloc無數(shù)據(jù)類型的檢查返回值為void*
。5)new申請內(nèi)存空間必須指明要存放的數(shù)據(jù)類型和要存放對象的數(shù)目,malloc只需要指明申請空間的大小,可以通過顯示地強(qiáng)制類型轉(zhuǎn)換改變返回值的數(shù)據(jù)類型
4.auto(C++)
auto申明的變量必須初始化,程序會根據(jù)初始化的值的數(shù)據(jù)類型來自動(dòng)確定該變量的數(shù)據(jù)類型。
5.指針和引用的區(qū)別
。1)指針和引用都是通過地址索引數(shù)據(jù)的。
。2)指針存放的是變量的地址,引用是變量的別名。
。3)指針也是一個(gè)變量需要占用4個(gè)字節(jié)(32位機(jī)器)的內(nèi)存空間,引用不需要占用內(nèi)存,它只是變量的一個(gè)別名。
5.面向?qū)ο蠛兔嫦蜻^程
面向?qū)ο螅好嫦蛑饕且阅繕?biāo)對象為研究體,這一思想的實(shí)現(xiàn)需要對各種不同屬性的類進(jìn)行封裝,進(jìn)而分析每種類型事物的屬性和功能方法,
這種思想將計(jì)算機(jī)軟件系統(tǒng)與外界系統(tǒng)一一對應(yīng),進(jìn)行有針對性的研究。核心在于 (對象 + 消息)
面向過程:C語言是面向過程的編程語言,這種思想主要是為了去實(shí)現(xiàn)某種功能或目標(biāo)去一步步研究算法流程,步步求精,
進(jìn)而用一種最為簡捷的過程來實(shí)現(xiàn)最終的目標(biāo),核心為 (算法+數(shù)據(jù))
6. static修飾類的成員變量和成員函數(shù)
。1)static修飾的成員變量屬于這個(gè)類,不屬于某個(gè)對象。
。2)static修飾的成員變量需要在類外進(jìn)行初始化。
。3)static修飾的成員函數(shù)只能訪問static修飾的成員變量,不能訪問普通成員變量。
。4)static修飾的成員函數(shù)沒有this指針。
。5)基類static修飾的成員變量繼承給子類也只存在一份,基類和派生類共享該成員。
。6)類內(nèi)部可以定義靜態(tài)的類對象成員,即 可以定義static修飾的類對象
// public:static base A; (正確) public: base A; (錯(cuò)誤)
7.mutable關(guān)鍵字
被mutable修飾的成員變量,是可變的,可以修改的,即使某個(gè)對象是const類型,該成員變量也可以被修改。在被const修飾的成員函數(shù)中該變量也可以被修改。
8.explicit:
只能修飾構(gòu)造函數(shù),防止單參數(shù)的構(gòu)造函數(shù)隱式類型轉(zhuǎn)換,把一個(gè)常量轉(zhuǎn)換成一個(gè)對象。
在沒有加explicit之前,可以把一個(gè)常量賦給一個(gè)對象。
推薦構(gòu)造函數(shù)前最好加explict
9.volitile:
該關(guān)鍵字意思為易變的,因?yàn)橛行⿻r(shí)候某個(gè)變量容易被改變,所以我們需要讀取當(dāng)前該變量最新的數(shù)據(jù),不需要編譯器做優(yōu)化處理。
主要用于多線程中。volatile提醒編譯器它后面所定義的變量隨時(shí)都有可能改變,因此編譯后的程序每次需要存儲或讀取這個(gè)變量的時(shí)候,都會直接從變量地址中讀取數(shù)據(jù)。如果沒有volatile關(guān)鍵字,則編譯器可能優(yōu)化讀取和存儲,可能暫時(shí)使用寄存器中的值,如果這個(gè)變量由別的程序更新了的話,將出現(xiàn)讀取數(shù)據(jù)不一致的現(xiàn)象。
【C/C++面試?缄P(guān)鍵字】相關(guān)文章:
register關(guān)鍵字在c語言和c++中的差異09-23
C/C++內(nèi)存管理09-20
Java與C/C++的區(qū)別06-18
C語言和C++的分別06-18
C語言和C++的區(qū)別精選10-16
C和C++的關(guān)系解說10-12
C語言和C++的區(qū)別09-19
C語言關(guān)鍵字08-31
C++類的轉(zhuǎn)換10-17