欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

面試真題 | 小米智能座艙

自我介紹

介紹項(xiàng)目

static關(guān)鍵字,在類里面使用呢?

問(wèn)題回答:static關(guān)鍵字在類里面的使用

在C++中,static關(guān)鍵字在類里面有多種用途,主要包括靜態(tài)成員變量和靜態(tài)成員函數(shù)。以下是詳細(xì)解釋:

靜態(tài)成員變量

  1. 定義與聲明

    • 靜態(tài)成員變量在類內(nèi)聲明,但在類外定義和初始化。它不屬于類的任何對(duì)象,而是屬于類本身。
    • 聲明時(shí)使用static關(guān)鍵字,如static int count;。
    • 定義時(shí)在類外,如int ClassName::count = 0;。
  2. 存儲(chǔ)位置

    • 靜態(tài)成員變量存儲(chǔ)在全局?jǐn)?shù)據(jù)區(qū),而不是對(duì)象的內(nèi)存空間中。
    • 因此,所有對(duì)象共享同一個(gè)靜態(tài)成員變量的值。
  3. 訪問(wèn)方式

    • 可以通過(guò)類名和作用域解析運(yùn)算符::來(lái)訪問(wèn)靜態(tài)成員變量,如ClassName::count。
    • 也可以通過(guò)對(duì)象來(lái)訪問(wèn),但這不是推薦的做法,因?yàn)樗赡芤l(fā)誤解。
  4. 用途

    • 常用于計(jì)數(shù)、記錄類的實(shí)例數(shù)量、作為類內(nèi)部的全局變量等。

靜態(tài)成員函數(shù)

  1. 定義與聲明

    • 靜態(tài)成員函數(shù)在類內(nèi)聲明時(shí)使用static關(guān)鍵字,如static void display() {}。
    • 它不屬于類的任何對(duì)象,因此不能訪問(wèn)非靜態(tài)成員變量或非靜態(tài)成員函數(shù)(除非通過(guò)對(duì)象指針或引用傳遞)。
  2. 調(diào)用方式

    • 可以通過(guò)類名和作用域解析運(yùn)算符::來(lái)調(diào)用靜態(tài)成員函數(shù),如ClassName::display()
    • 也可以通過(guò)對(duì)象來(lái)調(diào)用,但同樣不是推薦的做法。
  3. 參數(shù)傳遞

    • 由于靜態(tài)成員函數(shù)不能訪問(wèn)非靜態(tài)成員,如果需要訪問(wèn),通常通過(guò)參數(shù)傳遞對(duì)象指針或引用。
  4. 用途

    • 常用于實(shí)現(xiàn)與類相關(guān)的功能,但不依賴于特定對(duì)象的狀態(tài)。
    • 如工廠函數(shù)、工具函數(shù)等。

面試官追問(wèn)及相關(guān)回答

追問(wèn)1

  • 問(wèn)題:靜態(tài)成員變量和靜態(tài)成員函數(shù)與普通成員變量和成員函數(shù)的主要區(qū)別是什么?
  • 回答
    • 存儲(chǔ)位置不同:靜態(tài)成員變量存儲(chǔ)在全局?jǐn)?shù)據(jù)區(qū),而普通成員變量存儲(chǔ)在對(duì)象的內(nèi)存空間中。
    • 訪問(wèn)方式不同:靜態(tài)成員變量和成員函數(shù)可以通過(guò)類名直接訪問(wèn),而普通成員變量和成員函數(shù)只能通過(guò)對(duì)象來(lái)訪問(wèn)。
    • 生命周期不同:靜態(tài)成員變量在程序運(yùn)行時(shí)一直存在,直到程序結(jié)束;而普通成員變量的生命周期與對(duì)象的生命周期相同。
    • 作用域不同:靜態(tài)成員變量和成員函數(shù)的作用域是整個(gè)類,而普通成員變量和成員函數(shù)的作用域是類的實(shí)例。

追問(wèn)2

  • 問(wèn)題:在嵌入式系統(tǒng)中使用靜態(tài)成員變量和靜態(tài)成員函數(shù)有哪些需要注意的地方?
  • 回答
    • 注意內(nèi)存使用:由于靜態(tài)成員變量存儲(chǔ)在全局?jǐn)?shù)據(jù)區(qū),如果大量使用靜態(tài)成員變量,可能會(huì)導(dǎo)致內(nèi)存占用過(guò)多。
    • 避免多線程沖突:在多線程環(huán)境中,如果多個(gè)線程同時(shí)訪問(wèn)同一個(gè)靜態(tài)成員變量,需要采取同步措施來(lái)避免數(shù)據(jù)競(jìng)爭(zhēng)。
    • 謹(jǐn)慎使用靜態(tài)成員函數(shù)訪問(wèn)非靜態(tài)成員:雖然可以通過(guò)參數(shù)傳遞對(duì)象指針或引用來(lái)訪問(wèn)非靜態(tài)成員,但這會(huì)增加函數(shù)的復(fù)雜性和出錯(cuò)的可能性。因此,在設(shè)計(jì)類時(shí),應(yīng)盡量避免在靜態(tài)成員函數(shù)中訪問(wèn)非靜態(tài)成員。

追問(wèn)3

  • 問(wèn)題:能否給出一個(gè)使用靜態(tài)成員變量和靜態(tài)成員函數(shù)的實(shí)際例子?
  • 回答
    class Counter {
    public:
        // 靜態(tài)成員變量,用于記錄類的實(shí)例數(shù)量
        static int count;
    
        // 構(gòu)造函數(shù),每次創(chuàng)建對(duì)象時(shí)增加計(jì)數(shù)
        Counter() {
            count++;
        }
    
        // 析構(gòu)函數(shù),每次銷毀對(duì)象時(shí)減少計(jì)數(shù)
        ~Counter() {
            count--;
        }
    
        // 靜態(tài)成員函數(shù),用于顯示當(dāng)前計(jì)數(shù)
        static void displayCount() {
            std::cout << "Current count: " << count << std::endl;
        }
    };
    
    // 在類外定義和初始化靜態(tài)成員變量
    int Counter::count = 0;
    
    int main() {
        Counter obj1, obj2;
        Counter::displayCount(); // 輸出:Current count: 2
        Counter* obj3 = new Counter();
        Counter::displayCount(); // 輸出:Current count: 3
        delete obj3;
        Counter::displayCount(); // 輸出:Current count: 2
        return 0;
    }
    
    這個(gè)例子展示了如何使用靜態(tài)成員變量來(lái)記錄類的實(shí)例數(shù)量,并使用靜態(tài)成員函數(shù)來(lái)顯示該數(shù)量。

智能指針?

智能指針回答

問(wèn)題:請(qǐng)解釋一下C++中的智能指針,并詳細(xì)討論其種類、工作原理以及使用場(chǎng)景。

回答

智能指針是C++中用于自動(dòng)管理動(dòng)態(tài)分配內(nèi)存的一種機(jī)制,它通過(guò)封裝原始指針并提供對(duì)資源的自動(dòng)釋放,從而避免了內(nèi)存泄漏和懸空指針等問(wèn)題。C++標(biāo)準(zhǔn)庫(kù)提供了幾種主要的智能指針,包括std::unique_ptr、std::shared_ptrstd::weak_ptr

  1. std::unique_ptr

    • 獨(dú)占所有權(quán)的智能指針,不允許復(fù)制,只能移動(dòng)。
    • 當(dāng)unique_ptr被銷毀或離開(kāi)作用域時(shí),它所指向的對(duì)象也會(huì)被自動(dòng)刪除。
    • 適用于需要確保只有一個(gè)所有者管理資源的場(chǎng)景。
  2. std::shared_ptr

    • 共享所有權(quán)的智能指針,允許多個(gè)shared_ptr實(shí)例共享同一個(gè)對(duì)象。
    • 使用引用計(jì)數(shù)機(jī)制來(lái)管理對(duì)象的生命周期,當(dāng)最后一個(gè)shared_ptr被銷毀或重置時(shí),對(duì)象會(huì)被自動(dòng)刪除。
    • 適用于多個(gè)所有者需要共享資源的場(chǎng)景,但需要注意循環(huán)引用的問(wèn)題。
  3. std::weak_ptr

    • 弱引用,用于解決shared_ptr之間的循環(huán)引用問(wèn)題。
    • 不會(huì)增加對(duì)象的引用計(jì)數(shù),因此不會(huì)延長(zhǎng)對(duì)象的生命周期。
    • 可以從shared_ptr或另一個(gè)weak_ptr創(chuàng)建,但不能直接訪問(wèn)對(duì)象,必須通過(guò)lock()方法獲取shared_ptr來(lái)臨時(shí)訪問(wèn)對(duì)象。

工作原理

  • unique_ptr通過(guò)其析構(gòu)函數(shù)來(lái)釋放資源,當(dāng)unique_ptr對(duì)象被銷毀時(shí),它會(huì)調(diào)用delete來(lái)釋放其所指向的對(duì)象。
  • shared_ptr使用控制塊(通常包含引用計(jì)數(shù)和指向?qū)嶋H對(duì)象的指針)來(lái)管理對(duì)象的生命周期。當(dāng)shared_ptr被復(fù)制或賦值時(shí),控制塊會(huì)被共享,引用計(jì)數(shù)會(huì)增加。當(dāng)shared_ptr被銷毀或重置時(shí),引用計(jì)數(shù)會(huì)減少。當(dāng)引用計(jì)數(shù)變?yōu)?時(shí),控制塊和對(duì)象都會(huì)被釋放。
  • weak_ptr不直接管理資源,而是指向shared_ptr的控制塊。它不會(huì)增加引用計(jì)數(shù),因此不會(huì)阻止shared_ptr所管理的對(duì)象被銷毀。

使用場(chǎng)景

  • unique_ptr適用于需要確保資源獨(dú)占所有權(quán)的場(chǎng)景,如動(dòng)態(tài)數(shù)組、單例模式等。
  • shared_ptr適用于多個(gè)所有者需要共享資源的場(chǎng)景,如對(duì)象圖、樹(shù)形結(jié)構(gòu)等。但需要注意避免循環(huán)引用。
  • weak_ptr通常與shared_ptr一起使用,用于解決循環(huán)引用問(wèn)題,或在不增加引用計(jì)數(shù)的情況下觀察對(duì)象的狀態(tài)。

面試官追問(wèn)及回答

追問(wèn)1

  • 問(wèn)題:請(qǐng)解釋一下std::make_unique的作用,以及為什么推薦使用它而不是直接使用new來(lái)創(chuàng)建unique_ptr?
  • 回答
    • std::make_unique是一個(gè)模板函數(shù),用于創(chuàng)建并初始化一個(gè)unique_ptr。它接受與new相同的參數(shù),并返回一個(gè)unique_ptr對(duì)象。
    • 推薦使用std::make_unique而不是直接使用new來(lái)創(chuàng)建unique_ptr的原因有幾個(gè):
      • std::make_unique更加簡(jiǎn)潔和直觀,它直接返回unique_ptr,而不需要顯式地調(diào)用new。
      • std::make_unique是異常安全的。如果構(gòu)造函數(shù)拋出異常,它不會(huì)泄漏內(nèi)存,因?yàn)?code>new表達(dá)式和unique_ptr的構(gòu)造函數(shù)是作為一個(gè)原子操作執(zhí)行的。
      • 使用std::make_unique可以避免潛在的內(nèi)存泄漏問(wèn)題。如果直接使用new來(lái)創(chuàng)建對(duì)象,然后再將其地址賦給unique_ptr,在賦值過(guò)程中如果發(fā)生異常,可能會(huì)導(dǎo)致內(nèi)存泄漏。而std::make_unique則保證了在異常發(fā)生時(shí)不會(huì)泄漏內(nèi)存。

追問(wèn)2

  • 問(wèn)題:在shared_ptrunique_ptr之間如何選擇?請(qǐng)給出一些具體的選擇依據(jù)。
  • 回答
    • 在選擇shared_ptrunique_ptr時(shí),需要考慮資源的所有權(quán)和管理方式。
    • 如果資源只需要被一個(gè)所有者管理,并且不希望其他代碼能夠訪問(wèn)或共享這個(gè)資源,那么應(yīng)該選擇。

剩余60%內(nèi)容,訂閱專欄后可繼續(xù)查看/也可單篇購(gòu)買(mǎi)

ARM/Linux嵌入式真題 文章被收錄于專欄

讓實(shí)戰(zhàn)與真題助你offer滿天飛?。?! 每周更新?。?! 勵(lì)志做最全ARM/Linux嵌入式面試必考必會(huì)的題庫(kù)。 勵(lì)志講清每一個(gè)知識(shí)點(diǎn),找到每個(gè)問(wèn)題最好的答案。 讓你學(xué)懂,掌握,融會(huì)貫通。 因?yàn)榧夹g(shù)知識(shí)工作中也會(huì)用到,所以踏實(shí)學(xué)習(xí)哦!?。?/p>

全部評(píng)論

相關(guān)推薦

SHC2:關(guān)鍵問(wèn)題是你這三段實(shí)習(xí)是三個(gè)不同的崗位…你這樣子秋招就是只有一段實(shí)習(xí)的本科生..
點(diǎn)贊 評(píng)論 收藏
分享
點(diǎn)贊 評(píng)論 收藏
分享
評(píng)論
1
1
分享

創(chuàng)作者周榜

更多
正在熱議
更多
??途W(wǎng)
??推髽I(yè)服務(wù)