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

C++ 一道騰訊面試題深入剖析

  發(fā)布時(shí)間:2019-04-10 17:13:12   作者:佚名   我要評(píng)論
這篇文章主要為大家介紹了C++ 一道騰訊面試題,深入剖析C++面向?qū)ο蟪绦蛟O(shè)計(jì)中關(guān)于指針成員變量的相關(guān)操作技巧,代碼剖析深入淺出,具有一定代表性,需要的朋友可以參考下

騰訊面試題:

以下代碼是否完全正確,執(zhí)行可能得到的結(jié)果是____。

class A{
   int i;
};
class B{
   A *p;
public:
   B(){p=new A;}
   ~B(){delete p;}
};
void sayHello(B b){
}
int main(){
   B b;
   sayHello(b);
}

A.程序正常運(yùn)行
B.程序編譯錯(cuò)誤
C.程序崩潰
D.程序死循環(huán)

分析
 

   代碼中定義了兩個(gè)類,類A、類B和一個(gè)全局函數(shù)sayHello。類A中定義一個(gè)int類型的成員變量。類B中定義了一個(gè)A*類型的成員變量,且類B在初始化的時(shí)候構(gòu)造了類A的一個(gè)實(shí)例,在類B析構(gòu)時(shí)釋放了成員變量p(delete p)。全局函數(shù)sayHello的參數(shù)是類B的一個(gè)實(shí)例。
   首先程序中沒(méi)有編譯錯(cuò)誤,也沒(méi)有死循環(huán)(程序中沒(méi)有循環(huán)哪里來(lái)的死循環(huán))。有些初學(xué)者可能會(huì)說(shuō)main函數(shù)沒(méi)有寫(xiě)return 0,main函數(shù)不顯性的寫(xiě)return,編譯器也會(huì)幫你做的。
   那么根據(jù)我們這十幾年應(yīng)試教育考試的經(jīng)驗(yàn),這段代碼出問(wèn)題的概率很大,不賣(mài)關(guān)子了,直接說(shuō)吧:當(dāng)類中存在指針類型的成員變量時(shí)賦值和析構(gòu)要格外注意,這道題的問(wèn)題就出在類B對(duì)象b中的指針p被析構(gòu)了兩次。
   具體分析一下,當(dāng)執(zhí)行完成B b這句話后,在b中就構(gòu)造了一個(gè)類A的指針對(duì)象p,當(dāng)調(diào)用sayHello(b)函數(shù)時(shí)系統(tǒng)將會(huì)調(diào)用類B的賦值構(gòu)造函數(shù)構(gòu)造一個(gè)類B的實(shí)例bStep(為了方便下面的敘述隨便起了一個(gè)名字)傳入到sayHello函數(shù)中(問(wèn)題就出在bStep這個(gè)實(shí)例中),這里當(dāng)sayHello執(zhí)行完成后,之前構(gòu)造的實(shí)例bStep將被析構(gòu)(執(zhí)行delete p)。然后程序繼續(xù)開(kāi)心的執(zhí)行,直到執(zhí)行完main函數(shù)后系統(tǒng)將會(huì)析構(gòu)b,當(dāng)b被析構(gòu)時(shí)將再次執(zhí)行delete p。這樣p就被析構(gòu)了兩遍導(dǎo)致程序崩潰。

我們把代碼增加一些輸出信息后大家就更容易看了:
 

class B{
A *p;
public:
B(){ printf("構(gòu)造\n"); p = new A; }
~B(){ printf("析構(gòu)\n"); delete p; }
B(const B &b){ printf("賦值構(gòu)造\n"); }
};
void sayHello(B b){
}

int main()
{
B b;
sayHello(b);
}

相關(guān)文章

  • 騰訊公司c++面試小結(jié)

    這篇文章主要介紹了騰訊公司c++面試小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-02
  • C++ 面試題目(整理自牛客網(wǎng))

    這篇文章主要介紹了 C++ 面試題目(整理自??途W(wǎng)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-13
  • 華為校招 C++崗面試經(jīng)歷總結(jié)【筆試+一面+二面+Offer】

    這篇文章主要介紹了華為校招 C++崗面試經(jīng)歷,總結(jié)分析了華為校招C++崗位的筆試題,以及一面、二面到最終拿到Offer的經(jīng)歷與相關(guān)經(jīng)驗(yàn)感想,需要的朋友可以參考下
    2019-11-28
  • C++面試常見(jiàn)算法題與參考答案總結(jié)

    這篇文章主要介紹了C++面試常見(jiàn)算法題與參考答案,總結(jié)分析了C++面試中遇到的常見(jiàn)算法題與相應(yīng)的參考答案,需要的朋友可以參考下
    2019-11-20
  • C++必備面試題與參考答案經(jīng)典總結(jié)

    這篇文章主要介紹了C++必備面試題與參考答案,結(jié)合大量經(jīng)典實(shí)例總結(jié)分析了C++面試過(guò)程中經(jīng)常遇到的各種概念、原理、算法相關(guān)問(wèn)題及參考答案,需要的朋友可以參考下
    2019-10-31
  • C/C++經(jīng)典面試題(附答案)

    這篇文章主要介紹了C/C++經(jīng)典面試題(附答案),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-23
  • C/C++求職者必備的20道面試題與參考答案解析

    這篇文章主要介紹了C/C++求職者必備的20道面試題與參考答案,總結(jié)分析了C/C++相關(guān)的常見(jiàn)概念、原理、知識(shí)點(diǎn)與注意事項(xiàng),需要的朋友可以參考下
    2019-10-10
  • 騰訊的外包c(diǎn)++面試經(jīng)歷總結(jié)

    這篇文章主要介紹了騰訊的外包c(diǎn)++面試經(jīng)歷,總結(jié)記錄了一次騰訊C++面試的經(jīng)歷,包括面試的流程、面試題目與相應(yīng)的參考答案,需要的朋友可以參考下
    2019-09-29
  • 阿里面試必會(huì)的20道C++面試題與參考答案解析

    這篇文章主要介紹了阿里面試必會(huì)的20道C++面試題與參考答案,涉及C++指針、面向?qū)ο?、函?shù)等相關(guān)特性與使用技巧,需要的朋友可以參考下
    2019-09-26
  • 經(jīng)典C++筆試面試題目與參考答案100例

    這篇文章主要介紹了經(jīng)典C++筆試題目與參考答案,總結(jié)分析了C++常見(jiàn)的各種面試題目,包含C++常見(jiàn)知識(shí)點(diǎn)、技術(shù)難點(diǎn)、算法等,需要的朋友可以參考下
    2019-09-10

最新評(píng)論