• <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>

            麒麟子

            ~~

            導航

            <2013年2月>
            272829303112
            3456789
            10111213141516
            17181920212223
            242526272812
            3456789

            統(tǒng)計

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

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

            下面這些是基礎題,“高手”們飄過?。。?br>我想一般公司對語言方面,總會變著方法考下面的這些問題。這只是出現(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)語句,實現(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 麒麟子 閱讀(3795) 評論(31)  編輯 收藏 引用 所屬分類: Programming

            評論

            # re: 發(fā)幾道關于C++基礎知識的題,能不能做自己清楚就行。 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
              回復  更多評論   

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

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

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

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

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

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

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

            @楚天清秋
            因為A沒有定義虛析構(gòu)函數(shù)  回復  更多評論   

            # re: 發(fā)幾道關于C++基礎知識的題,能不能做自己清楚就行。 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 不合法,因為void類型沒有size
            2 q=1
            3 r=4  回復  更多評論   

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

            3、isFailed 的值,為什么!

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

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

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

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

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

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

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

            A* p = new B;
            delete p;

            ~~~~~~~~
            delete p;
            A的指針,但實例是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ù),這就說得通!

              回復  更多評論   

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

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

            # re: 發(fā)幾道關于C++基礎知識的題,能不能做自己清楚就行。 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ù)的話,應該是打印
            "~A"
            "~B"
              回復  更多評論   

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

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

            # re: 發(fā)幾道關于C++基礎知識的題,能不能做自己清楚就行。 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"   回復  更多評論   

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

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

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

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

            delete p;

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

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

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

            而當我們把A的析構(gòu)聲明成虛函數(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ù)來實現(xiàn)兩個都輸出的,我只想說,你沒有明白這題的本意?。?!  回復  更多評論   

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

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

              回復  更多評論   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            # re: 發(fā)幾道關于C++基礎知識的題,能不能做自己清楚就行。 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();
            }
            : )  回復  更多評論   

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

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

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

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

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

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



              回復  更多評論   

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

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

            亚洲∧v久久久无码精品| 午夜精品久久久久久99热| 久久婷婷综合中文字幕| 蜜桃麻豆www久久| 久久久久婷婷| 无码人妻精品一区二区三区久久| 亚洲欧美伊人久久综合一区二区| 久久亚洲精品视频| 亚洲国产成人精品久久久国产成人一区二区三区综 | 人妻精品久久久久中文字幕69| 久久99亚洲网美利坚合众国| 精品久久久久久国产免费了| 无码人妻少妇久久中文字幕蜜桃 | 久久婷婷久久一区二区三区| 国产成人香蕉久久久久| 久久精品国产亚洲AV不卡| 亚洲国产成人久久综合一| 伊人久久大香线蕉av不卡| 国产精品久久久99| 久久国产高潮流白浆免费观看| 中文精品99久久国产 | 久久综合久久鬼色| 2021久久精品国产99国产精品| 香蕉99久久国产综合精品宅男自 | 久久人人爽人人精品视频| 国产午夜精品久久久久免费视| 久久亚洲日韩看片无码| 99久久精品费精品国产| 日本道色综合久久影院| 国产精品久久永久免费| 色欲综合久久中文字幕网| 四虎久久影院| 色综合久久夜色精品国产| 色综合久久中文字幕综合网| 久久亚洲2019中文字幕| 久久久久这里只有精品| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国内精品久久久久影院老司| 免费一级欧美大片久久网| 久久精品国产欧美日韩| 久久久久综合国产欧美一区二区|