最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++面經(jīng)之什么是RAII面試問題解析

 更新時(shí)間:2023年06月14日 08:43:06   作者:二進(jìn)制架構(gòu)  
這篇文章主要介紹了C++面經(jīng)之什么是RAII面試問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第13面:

面試官:什么是RAII?

二師兄:RAIIResource Acquisition Is Initialization的縮寫。翻譯成中文是資源獲取即初始化。

面試官:RAII有什么特點(diǎn)和優(yōu)勢(shì)?

二師兄:主要的特點(diǎn)是,在對(duì)象初始化時(shí)獲取資源,在對(duì)象析構(gòu)時(shí)釋放資源。這種技術(shù)可以避免資源邪路或內(nèi)存泄漏,提高程序的健壯性和可維護(hù)性。

面試官:使用RAII可以做哪些事情?

二師兄:主要可以管理動(dòng)態(tài)分配的內(nèi)存而不需要手動(dòng)申請(qǐng)和釋放,管理鎖不需要手動(dòng)加鎖和解鎖,管理句柄不需要手動(dòng)打開和關(guān)閉。

面試官:你知道有哪些C++標(biāo)準(zhǔn)庫中已經(jīng)存在的類型使用了RAII技術(shù)?

二師兄:有std::shared_ptr、std::unqiue_ptrstd::lock_guardstd::unqiue_lock

面試官:知道std::lock_guard如何實(shí)現(xiàn)的嗎?

二師兄:應(yīng)該是在構(gòu)造的時(shí)候鎖定,在析構(gòu)的時(shí)候解鎖。

class lock_gurad
{
public:
    lock_gurad(std::mutex& mtx):mtx_(mtx){mtx_.lock(); }
    ~lock_gurad(){mtx_.unlock();}
private:
    std::mutex mtx_;
};

面試官:好的。今天的面試到此結(jié)束,回去等通知吧。

復(fù)盤

讓我們仔細(xì)看一下二師兄的這段代碼,不難發(fā)現(xiàn)存在以下問題:

  • std::mutex mtx_不能直接保存值,因?yàn)?code>mutex沒有拷貝構(gòu)造函數(shù),所以這里需要使用引用。
  • 需要在構(gòu)造函數(shù)前加上explicit關(guān)鍵字,防止編譯器隱式轉(zhuǎn)換
  • lock_gurad不能拷貝(因?yàn)闀?huì)有多個(gè)實(shí)例管理一個(gè)互斥鎖,導(dǎo)致不可預(yù)測(cè)的行為),所以要?jiǎng)h除拷貝構(gòu)造函數(shù)和拷貝賦值運(yùn)算符。

修復(fù)后的代碼如下:

class lock_guard
{
public:
    explicit lock_guard(std::mutex& mtx) : mtx_(mtx){ mtx_.lock(); }
    ~lock_guard(){ mtx_.unlock(); }
    lock_guard(const lock_guard&) = delete;
    lock_guard& operator=(const lock_guard&) = delete;
private:
    std::mutex&  mtx_;
};

好了,今日份面試到這里就結(jié)束了,更多關(guān)于C++面試的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言strcpy庫函數(shù)詳解

    C語言strcpy庫函數(shù)詳解

    這篇文章主要為大家介紹了C語言strcpy庫函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • C++?兩個(gè)類通過智能指針進(jìn)行訪問操作代碼

    C++?兩個(gè)類通過智能指針進(jìn)行訪問操作代碼

    在C++中,有多種方法可以實(shí)現(xiàn)將一個(gè)函數(shù)傳遞給另一個(gè)類,并在該類中調(diào)用該函數(shù),您可以選擇將函數(shù)作為回調(diào)函數(shù)或通過類的成員函數(shù)來實(shí)現(xiàn),這篇文章主要介紹了C++?兩個(gè)類通過智能指針進(jìn)行訪問操作,需要的朋友可以參考下
    2023-08-08
  • C/C++ 避免數(shù)組越界的方法

    C/C++ 避免數(shù)組越界的方法

    這篇文章主要介紹了C/C++ 避免數(shù)組越界的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • vc中使用SendMessage自定義消息函數(shù)

    vc中使用SendMessage自定義消息函數(shù)

    這篇文章主要介紹了vc中使用SendMessage自定義消息函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • C語言算法學(xué)習(xí)之雙向鏈表詳解

    C語言算法學(xué)習(xí)之雙向鏈表詳解

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個(gè)數(shù)據(jù)結(jié)點(diǎn)中都有兩個(gè)指針,分別指向直接后繼和直接前驅(qū)。本文主要介紹了C語言算法中雙向鏈表的實(shí)現(xiàn),需要的可以參考一下
    2022-05-05
  • c++ 如何在libuv中實(shí)現(xiàn)tcp服務(wù)器

    c++ 如何在libuv中實(shí)現(xiàn)tcp服務(wù)器

    這篇文章主要介紹了c++ 如何在libuv中實(shí)現(xiàn)tcp服務(wù)器,幫助大家更好的理解和使用libuv,感興趣的朋友可以了解下
    2021-02-02
  • C語言中的操作符優(yōu)先級(jí)的詳細(xì)介紹

    C語言中的操作符優(yōu)先級(jí)的詳細(xì)介紹

    這篇文章主要介紹了C語言中的操作符優(yōu)先級(jí)的詳細(xì)介紹的相關(guān)資料,希望通過本文能幫助到大家,大家通過本文能徹底掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • C++實(shí)現(xiàn)英文句子中的單詞逆序輸出的方法

    C++實(shí)現(xiàn)英文句子中的單詞逆序輸出的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)英文句子中的單詞逆序輸出的方法,涉及C++字符串遍歷、分割、截取、輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • STL 的string類怎么啦

    STL 的string類怎么啦

    在我們研究string類犯了什么毛病之前,還讓我先說一下如何了解一個(gè)C++的類。我們要了解一個(gè)C++的類,一般來說,要從三個(gè)方面入手
    2013-11-11
  • C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼

    C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼

    大家好,本篇文章主要講的是C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01

最新評(píng)論

兰州市| 肃南| 汨罗市| 横山县| 肇源县| 南雄市| 九龙坡区| 怀仁县| 南阳市| 拉萨市| 厦门市| 岳阳县| 凤冈县| 永仁县| 六盘水市| 陇南市| 杭锦旗| 呼和浩特市| 玉环县| 凤台县| 靖州| 于田县| 蛟河市| 和静县| 突泉县| 班戈县| 胶州市| 绥中县| 天水市| 莫力| 寿光市| 凉山| 南川市| 海淀区| 南雄市| 子长县| 连江县| 大渡口区| 尼勒克县| 昭觉县| 九寨沟县|