欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分享面試官常用16個c/c++面試題

 更新時間:2022年01月06日 11:49:10   作者:廖先生  
這篇文章主要分享的是面試官常用的16個c/c++面試題,?C中static有什么作用、C++中const有什么用?C與C++各自是如何定義常量的?有什么不同?等等問題,具有一定的參考資料,需要的小伙伴可以參考一下

1. C中static有什么作用

(1)隱藏。 當我們同時編譯多個文件時,所有未加static前綴的全局變量和函數(shù)都具有全局可見性,故使用static在不同的文件中定義同名函數(shù)和同名變量,而不必擔心命名沖突?! ?/p>

(2)static的第二個作用是保持變量內(nèi)容的持久。存儲在靜態(tài)數(shù)據(jù)區(qū)的變量會在程序剛開始運行時就完成初始化,也是唯一的一次初始化。共有兩種變量存儲在靜態(tài)存儲區(qū):全局變量和static變量?! ?/p>

(3)static的第三個作用是默認初始化為0.其實全局變量也具備這一屬性,因為全局變量也存儲在靜態(tài)數(shù)據(jù)區(qū)。在靜態(tài)數(shù)據(jù)區(qū),內(nèi)存中所有的字節(jié)默認值都是0×00,某些時候這一特點可以減少程序員的工作量。

2.C++中const有什么用?

不要一聽到const就說是常量,這樣給考官一種在和一個外行交談的感覺。應(yīng)該說const修飾的內(nèi)容不可改變就行了, 定義常量只是一種使用方式而已,還有const數(shù)據(jù)成員,const參數(shù), const返回值, const成員函數(shù)等, 被const修飾的東西都受到強制保護,可以預(yù)防意外的變動,能提高程序的健壯性。

3. C與C++各自是如何定義常量的?有什么不同?

C中是使用宏#define定義, C++使用更好的const來定義。區(qū)別: 

1)const是有數(shù)據(jù)類型的常量,而宏常量沒有,編譯器可以對前者進行靜態(tài)類型安全檢查,對后者僅是字符替換,沒有類型安全檢查,而且在字符替換時可能會產(chǎn)生意料不到的錯誤(邊際效應(yīng))。 

2)有些編譯器可以對const常量進行調(diào)試, 不能對宏調(diào)試。

4. 既然C++中有更好的const為什么還要使用宏?

const無法代替宏作為衛(wèi)哨來防止文件的重復(fù)包含。

5. C++中引用和指針的區(qū)別?

引用是對象的別名, 操作引用就是操作這個對象, 必須在創(chuàng)建的同時有效得初始化(引用一個有效的對象, 不可為NULL), 初始化完畢就再也不可改變, 引用具有指針的效率, 又具有變量使用的方便性和直觀性, 在語言層面上引用和對象的用法一樣, 在二進制層面上引用一般都是通過指針來實現(xiàn)的, 只是編譯器幫我們完成了轉(zhuǎn)換。 之所以使用引用是為了用適當?shù)墓ぞ咦銮∪缙浞值氖拢?體現(xiàn)了最小特權(quán)原則。

6. 說一說C與C++的內(nèi)存分配方式?

1)從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在,如全局變量,static變量。 

2)在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。

3)從堆上分配(動態(tài)內(nèi)存分配)程序在運行的時候用malloc或new申請任意多少的內(nèi)存,程序員負責在何時用free或delete釋放內(nèi)存。動態(tài)內(nèi)存的生存期自己決定,使用非常靈活。

7. new/delete 與 malloc()/free() 的區(qū)別?

malloc()free() 是C語言的標準庫函數(shù),new/delete 是C++的運算符, 他們都可以用來申請和釋放內(nèi)存,malloc()free()不在編譯器控制權(quán)限之內(nèi), 不能把構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強加給他們。

8. #include<a.h>和#include"a.h" 有什么區(qū)別?

答:對于#include ,編譯器從標準庫路徑開始搜索 a.h對于#include "a.h" ,編譯器從用戶的工作路徑開始搜索 a.h

9. 在C++ 程序中調(diào)用被 C編譯器編譯后的函數(shù),為什么要加 extern "C"?

C++語言支持函數(shù)重載,C語言不支持函數(shù)重載。函數(shù)被C++編譯后在庫中的名字與C語言的不同。假設(shè)某個函數(shù)的原型為:void foo(int x, int y);該函數(shù)被C編譯器編譯后在庫中的名字為_foo,而C++編譯器則會產(chǎn)生像_foo_int_int之類的名字。C++提供了C連接交換指定符號extern"C"來解決名字匹配問題。

10. C++中的什么是多態(tài)性?是如何實現(xiàn)的? 

多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計語言繼數(shù)據(jù)抽象和繼承之后的第三個基本特征。它是在運行時出現(xiàn)的多態(tài)性通過派生類和虛函數(shù)實現(xiàn)?;惡团缮愔惺褂猛瑯拥暮瘮?shù)名, 完成不同的操作具體實現(xiàn)相隔離的另一類接口,即把" w h a t"從"h o w"分離開來。多態(tài)性提高了代碼的組織性和可讀性,虛函數(shù)則根據(jù)類型的不同來進行不同的隔離。

11. 什么是動態(tài)特性?

在絕大多數(shù)情況下, 程序的功能是在編譯的時候就確定下來的, 我們稱之為靜態(tài)特性。 反之, 如果程序的功能是在運行時刻才能確定下來的, 則稱之為動態(tài)特性。C++中, 虛函數(shù),抽象基類, 動態(tài)綁定和多態(tài)構(gòu)成了出色的動態(tài)特性。

12.什么是封裝?C++中是如何實現(xiàn)的?

封裝來源于信息隱藏的設(shè)計理念, 是通過特性和行為的組合來創(chuàng)建新數(shù)據(jù)類型讓接口與具體實現(xiàn)相隔離。C++中是通過類來實現(xiàn)的, 為了盡量避免某個模塊的行為干擾同一系統(tǒng)中的其它模塊,應(yīng)該讓模塊僅僅公開必須讓外界知道的接口。

13. 什么是RTTI?

RTTI事指運行時類型識別(Run-time type identification)在只有一個指向基類的指針或引用時確定一個對象的準確類型。

14. 什么是拷貝構(gòu)造函數(shù)?

它是單個參數(shù)的構(gòu)造函數(shù),其參數(shù)是與它同屬一類的對象的(常)引用;類定義中,如果未提供自己的拷貝構(gòu)造函數(shù),C++提供一個默認拷貝構(gòu)造函數(shù),該默認拷貝構(gòu)造函數(shù)完成一個成員到一個成員的拷貝

15. 什么是深淺拷貝?

淺拷貝是創(chuàng)建了一個對象用一個現(xiàn)成的對象初始化它的時候只是復(fù)制了成員(簡單賦值)而沒有拷貝分配給成員的資源(如給其指針變量成員分配了動態(tài)內(nèi)存); 深拷貝是當一個對象創(chuàng)建時,如果分配了資源,就需要定義自己的拷貝構(gòu)造函數(shù),使之不但拷貝成員也拷貝分配給它的資源。

16.面向?qū)ο蟪绦蛟O(shè)計的優(yōu)點?

開發(fā)時間短, 效率高, 可靠性高。面向?qū)ο缶幊痰木幋a具有高可重用性,可以在應(yīng)用程序中大量采用成熟的類庫(如STL),從而雖短了開發(fā)時間,軟件易于維護和升級。

到此這篇關(guān)于面試官常用的16個c/c++面試題的文章就介紹到這了,更多相關(guān)16個常用的c/c++面試題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++11非受限聯(lián)合體的使用

    C++11非受限聯(lián)合體的使用

    本文主要介紹了C++11非受限聯(lián)合體的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 使用C語言實現(xiàn)三子棋游戲

    使用C語言實現(xiàn)三子棋游戲

    這篇文章主要為大家詳細介紹了使用C語言實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++入門之實現(xiàn)十步萬度游戲

    C++入門之實現(xiàn)十步萬度游戲

    這篇文章主要介紹了C++入門實現(xiàn)十步萬度游戲,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • C++實現(xiàn)LeetCode(13.羅馬數(shù)字轉(zhuǎn)化成整數(shù))

    C++實現(xiàn)LeetCode(13.羅馬數(shù)字轉(zhuǎn)化成整數(shù))

    這篇文章主要介紹了C++實現(xiàn)LeetCode(13.羅馬數(shù)字轉(zhuǎn)化成整數(shù)),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++隱式轉(zhuǎn)換問題分析及解決辦法

    C++隱式轉(zhuǎn)換問題分析及解決辦法

    在本篇文章里小編給大家整理了關(guān)于C++隱式轉(zhuǎn)換問題分析及解決辦法,有需要的朋友們可以學(xué)習下。
    2020-02-02
  • C++ const引用、臨時變量 引用參數(shù)詳解

    C++ const引用、臨時變量 引用參數(shù)詳解

    下面小編就為大家?guī)硪黄狢++ const引用、臨時變量 引用參數(shù)詳解。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++實現(xiàn)LeetCode(93.復(fù)原IP地址)

    C++實現(xiàn)LeetCode(93.復(fù)原IP地址)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(93.復(fù)原IP地址),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C/C++使用過程中的溢出問題詳解

    C/C++使用過程中的溢出問題詳解

    在C/C++程序里有一類非常典型的問題,那就是:溢出問題,現(xiàn)在分別來分析一下常見的數(shù)組溢出,整數(shù)溢出,緩沖區(qū)溢出,棧溢出和指針溢出等,需要的朋友可以參考下
    2024-01-01
  • VC實現(xiàn)讓關(guān)閉按鈕成灰色不可用的方法

    VC實現(xiàn)讓關(guān)閉按鈕成灰色不可用的方法

    這篇文章主要介紹了VC實現(xiàn)讓關(guān)閉按鈕成灰色不可用的方法,比較實用的一個特殊功能,需要的朋友可以參考下
    2014-08-08
  • c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    構(gòu)造函數(shù)需要初始化的數(shù)據(jù)成員,不論是否顯示的出現(xiàn)在構(gòu)造函數(shù)的成員初始化列表中,都會在該處完成初始化,并且初始化的順序和其在聲明時的順序是一致的,與列表的先后順序無關(guān)
    2013-09-09

最新評論