C++面試一些問題記錄-創(chuàng)新互聯(lián)

1.怎么限制對象只能建立在棧上?

重載new/delete操作符或設置為私有

主要從事網(wǎng)頁設計、PC網(wǎng)站建設(電腦版網(wǎng)站建設)、wap網(wǎng)站建設(手機版網(wǎng)站建設)、成都響應式網(wǎng)站建設、程序開發(fā)、微網(wǎng)站、微信平臺小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)積累了豐富的成都做網(wǎng)站、網(wǎng)站設計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設計、營銷、管理等多方位專業(yè)化運作于一體,具備承接不同規(guī)模與類型的建設項目的能力。2.怎么限制對象只能建立在堆上?
  • 將析構函數(shù)設定為私有,再定義一個共有的釋放函數(shù)(有問題無法實現(xiàn)多態(tài),因為析構函數(shù)要設置為虛函數(shù))
  • 將構造函數(shù)設為protect,然后提供一個public函數(shù)進行構造
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指針,負責指向虛函數(shù)表的地址(vptr指針在構造完成的時候完成初始化)

5.構造和析構函數(shù)需要定義為虛函數(shù)嗎?

構造函數(shù)不能定義為虛函數(shù)。vptr指針構造完成才能確認指向,所以構造函數(shù)不能定義為虛函數(shù) 析構函數(shù)必須定義為虛函數(shù)。否則多態(tài)時無法析構父類方法

6.delete和delete[]區(qū)別?

delete[]會多次調(diào)用析構函數(shù)

7.什么是野指針?
  • 指向被釋放的內(nèi)存
  • 指向沒有權限的內(nèi)存
8.野指針產(chǎn)生的原因?
  • 指針未初始化為nullptr,指向是隨機的
  • 內(nèi)存被釋放后,指向內(nèi)存的指針沒有被置空
  • 指針指向一塊棧上的內(nèi)存,這塊內(nèi)存作用域結束就被釋放了
9.C++的空類都會創(chuàng)建那些函數(shù)
  • 默認構造
  • 拷貝構造
  • 賦值運算符
  • 取值運算符
  • const取值運算符
  • 析構函數(shù)
10.sizeof怎么計算的?

字節(jié)對齊計算

11.static修飾符
  • 修飾類內(nèi)變量:類外初始化、與類綁定不與對象綁定、類內(nèi)所有函數(shù)都能調(diào)用、存儲在全局靜態(tài)區(qū)
  • 修飾全局變量:只能被初始化一次,只能當前文件訪問
  • 修飾類外局部變量:只能被初始化一次、可見域結束不會釋放
  • 修飾類外函數(shù):當前文件可見
  • 修飾類內(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
  • 沒有對基類的析構函數(shù)加虛函數(shù)
  • 比如文件句柄、socket等資源沒有釋放
  • shard_ptr循環(huán)引用
14.C++源碼到可執(zhí)行文件的步驟?

預處理-編譯-匯編-鏈接

15.memset可以初始化一個對象嗎?

當有虛函數(shù)存在的時候不行,memset會將vptr指針賦空值

16.sizeof一個空類的大小?

每個對象都有獨一無二的地址,為了保存地址所以設置為1

17.左值和右值
  • 左值是可尋址的變量,有持久性;
  • 右值一般是不可尋址的常量,或在表達式求值過程中創(chuàng)建的無名臨時對象,短暫性的。
18.move和forward
  • forward:將一個傳進函數(shù)的參數(shù)原封不動的傳遞出去(這里的原封不動指的是如果傳進來之前為右值,那么就以右值傳出去,如果傳進來是左值,那么就以左值傳出去
  • move:是一個強制類型轉換,將左值類型轉換為右值類型,主要目的就是方便調(diào)用右值類型的構造函數(shù),和static_cast<>(),差不多類似的作用,用了move的對象對其它對象進行初始化時會調(diào)用右值引用構造函數(shù)也是轉移構造函數(shù),這個構造函數(shù)的作用就是將對象的內(nèi)容直接給要初始化的對象,而不是拷貝一個過去

文章來自多方面的學習積累,請各位大佬指正

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

新聞標題:C++面試一些問題記錄-創(chuàng)新互聯(lián)
本文鏈接:http://bm7419.com/article36/gospg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、靜態(tài)網(wǎng)站、定制開發(fā)、云服務器、網(wǎng)站收錄網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名