国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++面試八股文:什么是RAII?

這篇具有很好參考價(jià)值的文章主要介紹了C++面試八股文:什么是RAII?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wè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)庫(kù)中已經(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é)束,回去等通知吧。

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

  1. std::mutex mtx_不能直接保存值,因?yàn)?code>mutex沒(méi)有拷貝構(gòu)造函數(shù),所以這里需要使用引用。
  2. 需要在構(gòu)造函數(shù)前加上explicit關(guān)鍵字,防止編譯器隱式轉(zhuǎn)換
  3. 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)注我,帶你走進(jìn)二師兄的C++面試生涯。

關(guān)注我,帶你21天“精通”C++?。ü奉^)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-481435.html

到了這里,關(guān)于C++面試八股文:什么是RAII?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++面試八股文:override和finial關(guān)鍵字有什么作用?

    C++面試八股文:override和finial關(guān)鍵字有什么作用?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第22面: (二師兄好苦逼,節(jié)假日還在面試。。。) 面試官:C++的繼承了解嗎? 二師兄:(不好意思,你面到我的強(qiáng)項(xiàng)了。。)了解一些。 面試官:什么是虛函數(shù),為什么需要虛函數(shù)? 二師兄:虛函數(shù)允許在基類中定義一個(gè)函

    2024年02月10日
    瀏覽(20)
  • C++面試八股文:技術(shù)勘誤

    C++面試八股文:技術(shù)勘誤

    不知不覺,《C++面試八股文》已經(jīng)更新30篇了,這是我第一次寫技術(shù)博客,由于個(gè)人能力有限,出現(xiàn)了不少紕漏,在此向各位讀者小伙伴們致歉。 為了不誤導(dǎo)更多的小伙伴,以后會(huì)不定期的出勘誤文章,請(qǐng)各位小伙伴留意。 在《C++面試八股文:C++中,設(shè)計(jì)一個(gè)類要注意哪些東

    2024年02月11日
    瀏覽(29)
  • C++面試八股文:如何避免死鎖?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第31面: 面試官:什么是鎖?有什么作用? 二師兄:在C++中,鎖(Lock)是一種同步工具,用于保護(hù)共享資源,防止多個(gè)線程同時(shí)訪問(wèn),從而避免數(shù)據(jù)競(jìng)爭(zhēng)和不一致。 面試官:有哪些鎖? 二師兄:從種類上分,可以分為普通鎖、

    2024年02月12日
    瀏覽(28)
  • C++面試八股文:聊一聊指針?

    C++面試八股文:聊一聊指針?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第17面: 面試官:聊一聊指針? 二師兄:好的。 面試官:你覺得指針本質(zhì)上是什么? 二師兄:這要從內(nèi)存地址開始說(shuō)起了。如果有一塊容量是1G的內(nèi)存,假設(shè)它的地址是從 0x00000000 到 0x3fffffff ,每一個(gè)字節(jié)都對(duì)應(yīng)一個(gè)地址。當(dāng)

    2024年02月09日
    瀏覽(24)
  • C++面試八股文:用過(guò)STL嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第21面: 面試官:用過(guò)STL嗎? 二師兄:(每天都用好嗎。。)用過(guò)一些。 面試官:你知道STL是什么? 二師兄:STL是指標(biāo)準(zhǔn)模板庫(kù)( Standard Template Library ),是C++區(qū)別于C語(yǔ)言的特征之一。 面試官:那你知道STL的六大部件是什么

    2024年02月09日
    瀏覽(15)
  • C++面試八股文:了解位運(yùn)算嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第12面: 面試官:了解位運(yùn)算嗎? 二師兄:了解一些。(我很熟悉) 面試官:請(qǐng)列舉以下有哪些位運(yùn)算? 二師兄:按位與( )、按位或( | )、按位異或( ^ ),按位取反( ~ )、左移( )和右移( )。 面試官:好的。那你

    2024年02月08日
    瀏覽(23)
  • java八股文面試[多線程]——什么是守護(hù)線程

    java八股文面試[多線程]——什么是守護(hù)線程

    ?知識(shí)來(lái)源: 【2023年面試】什么是守護(hù)線程_嗶哩嗶哩_bilibili

    2024年02月11日
    瀏覽(26)
  • C++面試八股文:如何實(shí)現(xiàn)一個(gè)strncpy函數(shù)?

    C++面試八股文:如何實(shí)現(xiàn)一個(gè)strncpy函數(shù)?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第31面: 面試官: strcpy 函數(shù)使用過(guò)吧? 二師兄:用過(guò)。 面試官:這個(gè)函數(shù)有什么作用? 二師兄:主要用做字符串復(fù)制,將于字符從一個(gè)位置復(fù)制到另一個(gè)位置。 面試官: strncpy 函數(shù)也使用過(guò)吧,和 strcpy 有何不同? 二師兄:

    2024年02月11日
    瀏覽(38)
  • C++面試八股文:std::vector了解嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第23面: 面試官: vector 了解嗎? 二師兄:嗯,用過(guò)。 面試官:那你知道 vector 底層是如何實(shí)現(xiàn)的嗎? 二師兄: vector 底層使用動(dòng)態(tài)數(shù)組來(lái)存儲(chǔ)元素對(duì)象,同時(shí)使用 size 和 capacity 記錄當(dāng)前元素的數(shù)量和當(dāng)前動(dòng)態(tài)數(shù)組的容量。如果

    2024年02月10日
    瀏覽(28)
  • C++面試八股文:std::deque用過(guò)嗎?

    C++面試八股文:std::deque用過(guò)嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第26面: 面試官: deque 用過(guò)嗎? 二師兄:說(shuō)實(shí)話,很少用,基本沒(méi)用過(guò)。 面試官:為什么? 二師兄:因?yàn)槭褂盟膱?chǎng)景很少,大部分需要性能、且需要自動(dòng)擴(kuò)容的時(shí)候使用 vector ,需要隨機(jī)插入和刪除的時(shí)候可以使用 list 。

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包