1.怎么限制對象只能建立在棧上?
重載new/delete操作符或設(shè)置為私有

主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、
成都響應(yīng)式網(wǎng)站建設(shè)、程序開發(fā)、微網(wǎng)站、微信平臺小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的
成都做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運作于一體,具備承接不同規(guī)模與類型的建設(shè)項目的能力。2.怎么限制對象只能建立在堆上?
- 將析構(gòu)函數(shù)設(shè)定為私有,再定義一個共有的釋放函數(shù)(有問題無法實現(xiàn)多態(tài),因為析構(gòu)函數(shù)要設(shè)置為虛函數(shù))
- 將構(gòu)造函數(shù)設(shè)為protect,然后提供一個public函數(shù)進(jìn)行構(gòu)造
3.虛函數(shù)可以內(nèi)聯(lián)嗎?
不實現(xiàn)多態(tài)的虛函數(shù)可以內(nèi)聯(lián)。內(nèi)聯(lián)是編譯時期的處理,多態(tài)是運行時期的處理
4.虛函數(shù)說明一下?
編譯器為每個含有虛函數(shù)的類共建一張?zhí)摫?,里面有虛函?shù)的入口地址。每個對象有一個vptr指針,負(fù)責(zé)指向虛函數(shù)表的地址(vptr指針在構(gòu)造完成的時候完成初始化)
5.構(gòu)造和析構(gòu)函數(shù)需要定義為虛函數(shù)嗎?
構(gòu)造函數(shù)不能定義為虛函數(shù)。vptr指針構(gòu)造完成才能確認(rèn)指向,所以構(gòu)造函數(shù)不能定義為虛函數(shù) 析構(gòu)函數(shù)必須定義為虛函數(shù)。否則多態(tài)時無法析構(gòu)父類方法
6.delete和delete[]區(qū)別?
delete[]會多次調(diào)用析構(gòu)函數(shù)
7.什么是野指針?
- 指向被釋放的內(nèi)存
- 指向沒有權(quán)限的內(nèi)存
8.野指針產(chǎn)生的原因?
- 指針未初始化為nullptr,指向是隨機(jī)的
- 內(nèi)存被釋放后,指向內(nèi)存的指針沒有被置空
- 指針指向一塊棧上的內(nèi)存,這塊內(nèi)存作用域結(jié)束就被釋放了
9.C++的空類都會創(chuàng)建那些函數(shù)
- 默認(rèn)構(gòu)造
- 拷貝構(gòu)造
- 賦值運算符
- 取值運算符
- const取值運算符
- 析構(gòu)函數(shù)
10.sizeof怎么計算的?
字節(jié)對齊計算
11.static修飾符
- 修飾類內(nèi)變量:類外初始化、與類綁定不與對象綁定、類內(nèi)所有函數(shù)都能調(diào)用、存儲在全局靜態(tài)區(qū)
- 修飾全局變量:只能被初始化一次,只能當(dāng)前文件訪問
- 修飾類外局部變量:只能被初始化一次、可見域結(jié)束不會釋放
- 修飾類外函數(shù):當(dāng)前文件可見
- 修飾類內(nèi)函數(shù):類外可直接調(diào)用,函數(shù)內(nèi)只能用static變量
12.C++的內(nèi)存分布(32位尋址空間)?
內(nèi)核空間 棧(向下)大2M系統(tǒng)塊,不會產(chǎn)生內(nèi)存碎片 堆(向上)大3G手動分配,會產(chǎn)生內(nèi)存碎片 全局常量區(qū) 代碼段
13.內(nèi)存泄露的幾種情況?
- new或者malloc后沒有delete或者free
- 沒有對基類的析構(gòu)函數(shù)加虛函數(shù)
- 比如文件句柄、socket等資源沒有釋放
- shard_ptr循環(huán)引用
14.C++源碼到可執(zhí)行文件的步驟?
預(yù)處理-編譯-匯編-鏈接
15.memset可以初始化一個對象嗎?
當(dāng)有虛函數(shù)存在的時候不行,memset會將vptr指針賦空值
16.sizeof一個空類的大小?
每個對象都有獨一無二的地址,為了保存地址所以設(shè)置為1
17.左值和右值
- 左值是可尋址的變量,有持久性;
- 右值一般是不可尋址的常量,或在表達(dá)式求值過程中創(chuàng)建的無名臨時對象,短暫性的。
18.move和forward
- forward:將一個傳進(jìn)函數(shù)的參數(shù)原封不動的傳遞出去(這里的原封不動指的是如果傳進(jìn)來之前為右值,那么就以右值傳出去,如果傳進(jìn)來是左值,那么就以左值傳出去
- move:是一個強(qiáng)制類型轉(zhuǎn)換,將左值類型轉(zhuǎn)換為右值類型,主要目的就是方便調(diào)用右值類型的構(gòu)造函數(shù),和static_cast<>(),差不多類似的作用,用了move的對象對其它對象進(jìn)行初始化時會調(diào)用右值引用構(gòu)造函數(shù)也是轉(zhuǎn)移構(gòu)造函數(shù),這個構(gòu)造函數(shù)的作用就是將對象的內(nèi)容直接給要初始化的對象,而不是拷貝一個過去
文章來自多方面的學(xué)習(xí)積累,請各位大佬指正
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:C++面試一些問題記錄-創(chuàng)新互聯(lián)
本文鏈接:http://sd-ha.com/article36/gospg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、靜態(tài)網(wǎng)站、定制開發(fā)、云服務(wù)器、網(wǎng)站收錄、網(wǎng)站設(shè)計公司
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)