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

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

這篇具有很好參考價(jià)值的文章主要介紹了C++面試八股文:技術(shù)勘誤。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

不知不覺,《C++面試八股文》已經(jīng)更新30篇了,這是我第一次寫技術(shù)博客,由于個(gè)人能力有限,出現(xiàn)了不少紕漏,在此向各位讀者小伙伴們致歉。

為了不誤導(dǎo)更多的小伙伴,以后會(huì)不定期的出勘誤文章,請(qǐng)各位小伙伴留意。

在《C++面試八股文:C++中,設(shè)計(jì)一個(gè)類要注意哪些東西?》一文中,

#include <iostream>
struct Foo{};
struct Goo
{
    void f1(Foo& f){std::cout <<"non const function" << std::endl;}	
    void f1(const Foo& f){std::cout <<"const function" << std::endl;}
};
int main(int argc, char const *argv[])
{
    Foo foo;
    Goo goo;
    goo.f1(foo);    //無法通過編譯,error: ‘void Goo::f1(Foo)’ cannot be overloaded with ‘void Goo::f1(Foo)’
    return 0;
}

這里的例子f1f2方法的參數(shù)應(yīng)該是Foo fconst Foo f,這才是頂層const。在此感謝知乎用戶 退乎 的提醒。

在《C++面試八股文:std::string是如何實(shí)現(xiàn)的?》一文中,

有std::string重載的相關(guān)問題,我已經(jīng)在 技術(shù)勘誤:《C++面試八股文:std::string是如何實(shí)現(xiàn)的?》 一文中做了詳細(xì)說明,在此再次感謝知乎用戶 莊嚴(yán) 的指正。

在《C++面試八股文:override和finial關(guān)鍵字有什么作用?》一文中,final 誤拼為 finial,感謝知乎用戶 DiaoYan 的指正。

同時(shí),這張內(nèi)存布局圖也有錯(cuò)誤,

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

應(yīng)該是這樣的:

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

感謝知乎用戶 清越 的指正。

在《C++面試八股文:std::vector了解嗎?》一文中,

面試官:push_backemplace_back有什么區(qū)別?

除了文中所說的不同點(diǎn),還要一點(diǎn):emplace_back可以傳入構(gòu)造函數(shù)構(gòu)造對(duì)象,而push_back只能拷貝或移動(dòng)對(duì)象。

感謝知乎用戶 選擇公理 的指正。

在《C++面試八股文:std::vector和std::list,如何選擇?》一文中,

以下代碼的輸出是什么?

#include <iostream>
#include <list>
int main(int argc, char const *argv[])
{
    std::list<int> li = {1,2,3,4,5,6};
    for(auto it = li.begin(); it!= li.end(); ++it)
    {
        if(0 == *it % 2) li.erase(it);
    }
    for(auto& i : li) std::cout << i << " ";
    std::cout << std::endl;
}

這里給出的答案是有問題的:

erase函數(shù)返回下一個(gè)有效迭代器,所以可以把if(0 == *it % 2) li.erase(it)修改為if(0 == *it % 2) it = li.erase(it)來解決這個(gè)問題。

這里的erase返回的是下一個(gè)迭代器,然后++就是下下個(gè)迭代器,跳過了下個(gè)迭代器。但是上面代碼中%2 == 0 也會(huì)跳過下個(gè)奇數(shù),所以無法暴露這個(gè)問題。應(yīng)該改成:

#include <iostream>
#include <list>
int main(int argc, char const *argv[])
{
    std::list<int> li = {1,2,3,4,5,6};
    auto it = li.begin();
    while(it!= li.end())
    {
        if(0 == *it % 2) 
        {
            it = li.erase(it);
        }else{
            ++it;
        }
    }
    for(auto& i : li) std::cout << i << " ";
    std::cout << std::endl;
}

感謝知乎用戶 潸然 的指正。

在《C++面試八股文:什么是構(gòu)造函數(shù)?》一文中,

面試官:可以使用virtual修飾構(gòu)造函數(shù)嗎?

二師兄:不可以,因?yàn)闃?gòu)造函數(shù)在對(duì)象構(gòu)造階段調(diào)用,虛表尚未建立,所以無法調(diào)用虛函數(shù)實(shí)現(xiàn)多態(tài)。

這里的描述是有問題的,虛表是在編譯期生成,在構(gòu)造函數(shù)執(zhí)行時(shí),可能還沒有被初始化。所以無法調(diào)用虛函數(shù)實(shí)現(xiàn)多態(tài)。

感謝知乎用戶 handsome奶酪 的指正。

在《C++面試八股文:什么是空指針/野指針/懸垂指針?》一文中,

面試官:你知道0/NULL/nullptr三者之間的區(qū)別嗎?

二師兄:雖然三者都能定義空指針,但三者類型不同。

二師兄:0int類型,NULL在g++下是一個(gè)宏定義,而nullptr是有類型的;

#define NULL ((void *)0)

這里的定義也是有問題的,完整的定義如下:

#if defined (_STDDEF_H) || defined (__need_NULL)
#undef NULL /* in case <stdio.h> has defined it. */
#ifdef __GNUG__
#define NULL __null
#else /* G++ */
#ifndef __cplusplus
#define NULL ((void *)0)
#else /* C++ */
#define NULL 0
#endif /* C++ */
#endif /* G++ */
#endif /* NULL not defined and <stddef.h> or need NULL. */
#undef __need_NULL

GCC11下,是 __null, 類型是long。所以sizeof(NULL) == 8

再再再次感謝 莊嚴(yán) 大佬的指正。

感謝小伙伴們的的反饋,這對(duì)我來說非常寶貴。不僅幫助我改正了文章中的錯(cuò)誤,也讓我有機(jī)會(huì)更新和修正自己的知識(shí)儲(chǔ)備庫。

C++的標(biāo)準(zhǔn)繁雜,不同版本的標(biāo)準(zhǔn)可能有所出入。同時(shí)不同編譯器對(duì)標(biāo)準(zhǔn)的實(shí)現(xiàn)也不盡相同,這增加了C++學(xué)習(xí)者的負(fù)擔(dān)。

前路坎坷,吾輩不可因?yàn)榍G棘密布望而卻步。

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

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

本文來自互聯(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++面試八股文:什么是構(gòu)造函數(shù)?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第29面: 面試官:什么是構(gòu)造函數(shù)? 二師兄:構(gòu)造函數(shù)是一種特殊的成員函數(shù),用于創(chuàng)建和初始化類的對(duì)象。構(gòu)造函數(shù)的名稱與類的名稱相同,并且沒有返回類型。構(gòu)造函數(shù)在對(duì)象被創(chuàng)建時(shí)自動(dòng)調(diào)用。 面試官:什么是默認(rèn)構(gòu)造

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

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

    2024年02月08日
    瀏覽(23)
  • C++面試八股文:什么是RAII?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第13面: 面試官:什么是 RAII ? 二師兄: RAII 是 Resource Acquisition Is Initialization 的縮寫。翻譯成中文是資源獲取即初始化。 面試官: RAII 有什么特點(diǎn)和優(yōu)勢(shì)? 二師兄:主要的特點(diǎn)是,在對(duì)象初始化時(shí)獲取資源,在對(duì)象析構(gòu)時(shí)釋放

    2024年02月08日
    瀏覽(27)
  • 【技術(shù)面試】Java八股文業(yè)余選手-上篇(持續(xù)更新)

    【技術(shù)面試】Java八股文業(yè)余選手-上篇(持續(xù)更新)

    以下目錄參考下篇 5. RocketMQ 消息中間件、RabbitMQ、ActiveMQ 【√】5.1 RocketMQ 6. Kafka 大數(shù)據(jù)量消息中間件、ElasticSearch、ZooKeeper 【√】6.1 Kafka 【√】6.2 ElasticSearch 7. 分布式、研發(fā)提效、高并發(fā)、線程安全 【×】7.1 分布式與集群 【√】7.2 高并發(fā)、線程安全 【×】7.3 研發(fā)提效 【√

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

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

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

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

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

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

    C++面試八股文:std::deque用過嗎?

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

    2024年02月11日
    瀏覽(25)
  • C++面試八股文:在C++中,有哪些可執(zhí)行體?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第14面: 面試官:在C++中,有哪些可執(zhí)行體? 二師兄:可執(zhí)行體? 面試官:也就是可調(diào)用對(duì)象。 二師兄:讓我想一想。函數(shù)、函數(shù)指針、類的靜態(tài)方法、類的成員方法、仿函數(shù)、lambda表達(dá)式。 面試官:能說一說他們之間有什么

    2024年02月08日
    瀏覽(23)
  • C++面試八股文:了解auto關(guān)鍵字嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第15面: 面試官:了解 auto 嗎? 二師兄:嗯,了解一些(我很熟悉)。 面試官:說一說 auto 的用法吧? 二師兄: auto 主要是為了編譯器進(jìn)行類型推導(dǎo)。比如: 二師兄:也可以作為函數(shù)返回類型的占位符: 二師兄:在C

    2024年02月09日
    瀏覽(21)
  • C++面試八股文:了解sizeof操作符嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第10面: 面試官:了解 sizeof 操作符嗎? 二師兄:略微了解(不就是求大小的嘛。。) 面試官:請(qǐng)講以下如何使用 sizeof ? 二師兄: sizeof 主要是求變量或者類型的大小。直接使用 sizeof(type) 或 sizeof(var) 即可。 面試官:嗯。 s

    2024年02月08日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包