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