• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            麒麟子

            ~~

            導(dǎo)航

            <2010年6月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            統(tǒng)計(jì)

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。

            下面這些是基礎(chǔ)題,“高手”們飄過?。?!
            我想一般公司對語言方面,總會變著方法考下面的這些問題。這只是出現(xiàn)的一種形式。有啥好題歡迎大家分享,下面這些是我自己YY的。看題的兄弟只需在自己心里作答就行,一定不要忘了幾乎每題都有一個“ 為什么”。

             1class A
             2{
             3public:
             4    ~A(){cout<<"~A"<<endl;}
             5}
            ;
             6
             7class B:public A
             8{
             9public:
            10    ~B(){cout<<"~B"<<endl;}
            11}
            ;
            12
            13A* p = new B;
            14delete p;
            1、請問上面輸出什么,為什么!


             1class A
             2{};
             3
             4class B
             5{
             6   void f(){}
             7    int i;
             8}
            ;
             9
            10class C
            11{
            12   virtual void f(){}
            13}
            ;
            14
            15class D:public B,public C
            16{}
            17
            18int n1 = sizeof(A);
            19int n2 = sizeof(B);
            20int n3 = sizeof(C);
            21int n4 = sizeof(D);
            22
            2、n1  n2 n3 n4的值是多少,為什么!


             1void _MyNew(int* p)
             2{
             3  p = new int;
             4}

             5
             6int*= NULL;
             7bool isFailed = false;
             8_MyNew(p);
             9
            10if(p==NULL)
            11  isFailed = true;
            3、isFailed 的值,為什么!


            4、指針的函義(答案靈活,看理解程度)


            1int f(int a)
            2{
            3   if(a>0)
            4   
            5      return 0
            6   }

            7   return a;
            8}
            5、不用分支語句或跳轉(zhuǎn)語句,實(shí)現(xiàn)上面的分支執(zhí)行的功能。


            void f1(){}
            void f2(){}

            void test(bool bf)
            {
               
            if(bf)
                 f1();
               
            else
                 f2();
            }
            6、要求與5題相同。


            1void* p = NULL; p++;
            2char* q = NULL; q++;
            3int* r = NULL; r++;
            7、上面的語句是否合法,如果合法,p ,q,r的值分別是多少。為什么!

            1void f(int* p){}
            2void f(int p[]){}
            3
            8、如果我使用f(NULL);調(diào)用上面的函數(shù),哪個能成功,哪個會失敗,為什么。


            9、構(gòu)造一個簡單的棧。并將 0……9的數(shù)壓棧,再逆序輸出。


            10、你能解釋float f;   int a = *(int*)&f;這句代碼的含義么?


            posted on 2010-05-11 08:52 麒麟子 閱讀(3803) 評論(31)  編輯 收藏 引用 所屬分類: Programming

            評論

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 09:26 anonymous

            第一題編譯錯誤。g++ 4.4.1
            test.cpp: In function ‘int main()’:
            test.cpp:17: error: cannot convert ‘B*’ to ‘A*’ in initialization
              回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 09:33 小時(shí)候可靚了

            @anonymous
            哦,不好意思,忘了加繼承關(guān)系?,F(xiàn)已修正,謝謝!  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 10:10 楚天清秋

            1、請問上面輸出什么,為什么!
            為啥只打出 ~A 呢。。。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 10:14 小時(shí)候可靚了

            @楚天清秋
            明白三點(diǎn)就知道了。
            1、虛函數(shù)
            2、析構(gòu)函數(shù)的調(diào)用規(guī)則和時(shí)機(jī)
            3、析構(gòu)函數(shù)和普通成員函數(shù)也一樣,只是樣子很特別。   回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 11:23 北海鯤鵬

            @楚天清秋
            因?yàn)锳沒有定義虛析構(gòu)函數(shù)  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 11:26 北海鯤鵬

            1 void* p = NULL; p++;
            2 char* q = NULL; q++;
            3 int* r = NULL; r++;
            7、上面的語句是否合法,如果合法,p ,q,r的值分別是多少。為什么!

            1 不合法,因?yàn)関oid類型沒有size
            2 q=1
            3 r=4  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 11:28 北海鯤鵬

            3、isFailed 的值,為什么!

            isFailed=true,函數(shù)參數(shù)是傳值的  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 11:46 小時(shí)候可靚了

            @北海鯤鵬
            嗯,突然發(fā)現(xiàn)變量命名有點(diǎn)問題,我想你說的是對的。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 12:36 楚天清秋

            @小時(shí)候可靚了
            照理說析構(gòu)時(shí)時(shí)先 執(zhí)行自己的析構(gòu)函數(shù),然后執(zhí)行父類的析構(gòu)函數(shù),如果有多繼承,按照父類的聲明順序來執(zhí)行析構(gòu)函數(shù)。

            A* p = new B;
            delete p;
            所以應(yīng)該是
            A和B的析構(gòu)都執(zhí)行吧?  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 12:39 楚天清秋

            A* p = new B;
            delete p;

            ~~~~~~~~
            delete p;
            A的指針,但實(shí)例是B的,
            到底是先執(zhí)行A的析構(gòu)函數(shù),還是B的析構(gòu)函數(shù)。
            如果是先執(zhí)行A的析構(gòu)函數(shù),A的析構(gòu)函數(shù)由于不是Virtual的,所以不會執(zhí)行B的析構(gòu)函數(shù),這就說得通!

              回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 12:46 北海鯤鵬

            @楚天清秋
            寫段代碼跑一下就知道了,可以找一下關(guān)于C++類型綁定的文章  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 12:46 楚天清秋

            class A
            {
            public:
            A(){cout<<"~A"<<endl;}
            };

            class B:public A
            {
            public:
            B(){cout<<"~B"<<endl;}
            };

            main()
            {
            A* p = new B;
            delete p;

            return 0;
            }

            ---------------------------------
            如果上例改成構(gòu)造函數(shù)的話,應(yīng)該是打印
            "~A"
            "~B"
              回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 12:47 北海鯤鵬

            @楚天清秋
            寫段代碼跑一下就知道了,可以找一下關(guān)于 C++類型綁定的文章  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 12:51 楚天清秋

            @北海鯤鵬
            謝謝,代碼寫了也調(diào)試過,就是不明白

            A* p = new B;
            delete p;

            為什么 先執(zhí)行A的析構(gòu)函數(shù),然后B的析構(gòu)就不執(zhí)行了。

            ------------
            如果改成
            B* p = new B;
            delete p;

            結(jié)果很顯然,會打印
            "~B"
            "~A"   回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 13:55 春續(xù)

            第四如何做,這個不會。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 14:01 小時(shí)候可靚了

            析構(gòu)執(zhí)行是先自己再父類
            但由我們是
            A* p = new B;

            delete p;

            此是delete p;實(shí)現(xiàn)時(shí)是

            if( p != NULL)
            p->destructor();

            可以發(fā)現(xiàn),這次調(diào)用的是A的析構(gòu)。

            而當(dāng)我們把A的析構(gòu)聲明成虛函數(shù)時(shí)。。。 由虛函數(shù)調(diào)用可知,就會調(diào)用到B的析構(gòu),在B的析構(gòu)中就會調(diào)用A的析構(gòu)。

            析構(gòu)函數(shù)除了名字特殊外,和普通函數(shù)具有同樣的特性。。。

            那位把析構(gòu)改成構(gòu)造函數(shù)來實(shí)現(xiàn)兩個都輸出的,我只想說,你沒有明白這題的本意?。。?nbsp; 回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 15:00 Jakcie

            第1題,只輸出~A,因?yàn)椴皇翘撐鰳?gòu)函數(shù)。
            第2題,1,4,4,8
            第3題,北海鯤鵬的回答是對的。把指針傳進(jìn)去,也是按傳值的。要實(shí)現(xiàn)題中的目標(biāo),應(yīng)該用指針的指針。
            第5題,a=(a-abs(a))/2;
            第6題,不知道。
            第7題,北海鯤鵬的回答是對的。
            第8題,調(diào)用void f(int* p)成功。void f(int p[])失敗。因?yàn)閜[]是數(shù)組,不可能是NULL。
            第9題,怎么實(shí)現(xiàn)都行。
            第10題,把float在內(nèi)存中的表示強(qiáng)制轉(zhuǎn)換為int類型。

              回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 15:09 小時(shí)候可靚了

            各位可以不用回復(fù)在此,因?yàn)槲翌A(yù)計(jì)這每道題回答的字?jǐn)?shù)還是有百來字的。 而回答在這里肯定打不了那么多。 所以,自已知道就行了。。。 但是,你只需問你自己。。 真的知道嗎? 知道到了哪種程度。。。 希望大家越來越有興趣去探究底細(xì),發(fā)現(xiàn)那些總以為會很神秘的“幕后”。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。[未登錄] 2010-05-11 18:44

            第二題有問題,結(jié)果依賴編譯器。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 18:57 小時(shí)候可靚了

            @壞
            我又沒有要你答案,你只要能知道你自已常用的那個編譯器是啥值就行了。。。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。[未登錄] 2010-05-11 21:32 ~

            @楚天清秋
            所謂的靜態(tài)綁定。調(diào)用函數(shù)的地址在可執(zhí)行文件中直接寫定(這里是A的析構(gòu)函數(shù))。無需訪問虛表。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-11 22:04 小時(shí)候可靚了

            @~
            如果你有機(jī)會看到這留言,你可以說得更明白些么?  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-12 15:14 小熙

            float f =1.1;
            int a = *(int*)&f;
            cout<<a<<endl;
            調(diào)試了一下,并不是輸出1,輸出1066192077,不懂  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-12 18:15 Ocean.X

            @小熙
            浮點(diǎn)和整形在內(nèi)存存儲上是不一樣的,這個相當(dāng)于將float指針之后的sizeof(float)的數(shù)據(jù)按整形的存儲方式去讀取,結(jié)果當(dāng)然不會是1  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。[未登錄] 2010-05-14 15:07 12

            - -一不小心我全做對了。。
            我的求職經(jīng)驗(yàn)證明。。 如果全是這樣的題目的公司,或者搬抄林銳的書的公司都是垃圾公司  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。[未登錄] 2010-05-15 18:48 小時(shí)候可靚了

            @12
            干,不可能說全是這種題,只可能會是其中的一道或兩道。??梢钥吹贸鰜?,你是我所說的“高手”。 其實(shí)不僅是要看你會不會,還要看你對待事情的態(tài)度。。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-18 10:05 installB

            7.
            void test(bool bf)
            {
            typedef void (*PFUNC)(void);
            PFUNC fu1 = f1;
            PFUNC fu2 = f2;
            int a1 = (int)(fu1);
            int a2 = (int)(fu2);
            int a3 = a1 * bf + a2 * !bf;
            PFUNC F = (PFUNC)a3;
            F();
            }
            : )  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-22 15:39

            7. 其實(shí)后2個結(jié)果是未定義的
            8. 都是對的,函數(shù)參數(shù)中的數(shù)組已經(jīng)退化為指針  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-05-27 00:26 小時(shí)候可靚了

            @啊
            嗯,我也不能說你對與錯,只要你在你熟知的編譯環(huán)境里能驗(yàn)證你的答案就行。  回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。 2010-06-22 00:03 flyinghearts

            3、isFailed 的值永遠(yuǎn)為false,即使將void _MyNew(int* p)改為void _MyNew(int* &p),因?yàn)閚ew失敗不返回NULL,而是拋異常bad_alloc。



              回復(fù)  更多評論   

            # re: 發(fā)幾道關(guān)于C++基礎(chǔ)知識的題,能不能做自己清楚就行。[未登錄] 2013-05-21 14:07 123

            void test(bool bf)
            {
            void(*ptr[2])() = {f2,f1};
            ptr[bf]();
            }  回復(fù)  更多評論   

            久久精品一区二区三区不卡| 久久国产精品免费一区二区三区| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久97久久97精品免视看秋霞| 久久精品综合一区二区三区| 日本亚洲色大成网站WWW久久| 无码国产69精品久久久久网站| 99久久国产综合精品成人影院 | 久久成人精品| 亚洲综合精品香蕉久久网| 国产午夜福利精品久久| 久久久无码精品亚洲日韩京东传媒 | 久久久久久久尹人综合网亚洲| 国内精品久久久久久久涩爱| 久久综合综合久久综合| 久久精品国产第一区二区| 国产成人久久精品一区二区三区| 久久国产成人| 久久免费视频网站| 久久久一本精品99久久精品88| 久久久久久免费视频| 久久久久黑人强伦姧人妻| 国产精品久久亚洲不卡动漫| 一本久久a久久精品vr综合| 2020久久精品亚洲热综合一本| 狠狠色丁香婷婷综合久久来来去 | 亚洲精品NV久久久久久久久久| 久久亚洲高清观看| 精品久久久久久成人AV| 久久综合精品国产二区无码| 久久伊人精品一区二区三区| 亚洲人AV永久一区二区三区久久| 久久久久综合国产欧美一区二区| 久久国产免费观看精品| 久久精品国内一区二区三区| 久久精品国产一区| 国产日韩久久免费影院| 免费一级欧美大片久久网 | 2021久久国自产拍精品| 久久青青草原精品影院| 久久国产精品免费一区|