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

            sherrylso

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              18 Posts :: 0 Stories :: 124 Comments :: 0 Trackbacks

            題目是這樣的:
            問(wèn):不使用任何循環(huán)語(yǔ)句,遞歸,輸出打印n條(n>1) "Hello World"。
            解這道題目,利用了c++語(yǔ)言一個(gè)非常重要的特性:
            c++允許定義基于statck數(shù)據(jù)區(qū)的Object。由此,不由想到了Java.
            在Java的世界里,所有的類型都是引用(或者稱為指針), 對(duì)象內(nèi)存的分配都是通過(guò)new從heap上顯式的分配,無(wú)法在Java里構(gòu)建基于statck數(shù)據(jù)區(qū)的對(duì)象。所以在Java里,這道題目是無(wú)解的。
            Java之于c++,既是進(jìn)步,又是倒退。
            Java語(yǔ)言本身的確幫助c++程序員做了很多事情,比如GC, 去掉了c++中很多復(fù)雜的特性,比如多重繼承,運(yùn)算符重載等。
            同時(shí),c++本身的很多優(yōu)點(diǎn),也喪失了。 寫了c++, 然后再寫java,一個(gè)明顯的感覺是,沒法使用java寫出像c++一樣簡(jiǎn)潔的程序。
            比如, 沒有了運(yùn)算符重載, 你不得不使用equal方法來(lái)表達(dá)兩個(gè)對(duì)象的相等。
            Java不能顯式表達(dá)RAII概念,你不得不使用hard code的方法Log方法的進(jìn)入和退出, 如:
            func() {
            log("enter func");
            //do something.
            log("exit func");
            }

            posted on 2009-01-12 22:28 愛上龍卷風(fēng) 閱讀(2818) 評(píng)論(23)  編輯 收藏 引用

            Feedback

            # re: 一道面試題想到的 2009-01-12 23:29 ZhouRui
            那么請(qǐng)問(wèn)解是怎樣?元編程嗎?  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-12 23:39 夜弓
            @ZhouRui
            構(gòu)造函數(shù)啊~  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 01:15 Bill Gates
            這樣算是取巧了,因?yàn)閚ew一個(gè)對(duì)象數(shù)組,其實(shí)編譯器也會(huì)生成循環(huán)調(diào)用構(gòu)造函數(shù)的代碼  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 11:30 夢(mèng)在天涯
            new 數(shù)組這也叫解啊,難道你定義一個(gè)一般的變量就不調(diào)用構(gòu)造函數(shù)了嗎?  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的[未登錄] 2009-01-13 11:47 cppexplore
            我想樓主想表達(dá)的意思并不在于該題本身,而是RAII
            我隨意搜索了一下,有興趣可以繼續(xù)看下:http://hi.baidu.com/joel%5Ftan/blog/item/8682fcd8ceefeb3032fa1c3b.html
            相信大家不會(huì)認(rèn)為博主的這點(diǎn)“簡(jiǎn)單”想法不是“nosense”。
              回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 12:00 cppexplore
            汗,上個(gè)評(píng)論最后一句多寫了一個(gè)“不”,博主見諒。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 12:49 陳梓瀚(vczh)
            class X
            {
            public:
            X()
            {
            cout<<"Hello World"<<end;
            }
            };

            int x;
            cin>>x;
            delete[] new X[x];  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 14:22 紫云追雪
            用 goto 語(yǔ)句 算循環(huán)嗎?
            或者,直接用匯編Jmp 算 循環(huán)嗎?

            xxx.h
            #define Printf1 printf("Hello World")
            #define Printf2 Printf1;Printf1;
            #define Printf3 Printf2;Printf1;
            #define Printf4 Printf3;Printf1;
            ......

            #define Printf( N ) Printf ## N

            硬編碼 行不。。
            Printf(n);  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 15:45 ss
            int printHello(int n)
            {
            return ( n && printf("hello word\n") && printHello(n - 1) );
            }  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 17:10 cppexplore
            .................................
            真的沒人愿意看看RAII???????????????guard的實(shí)現(xiàn)、資源的自動(dòng)管理、資源申請(qǐng)的原子操作????這個(gè)題目也只是RAII的一個(gè)小小實(shí)踐
            class X{
            public:
            X(){}
            ~X(){printf("hello world!\n");}
            };
            int main()
            {
            X obj[n];
            return 0;
            }  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 17:45 ZhouRui
            @夜弓
            Java不是一樣有構(gòu)造函數(shù)。。。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 18:25 星綻紫輝
            做這樣的題目只是浪費(fèi)時(shí)間,沒有任何意義。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 22:11 Chipset
            如果一個(gè)面試官問(wèn)我這樣的問(wèn)題,我會(huì)認(rèn)為他弱智,這樣的公司我寧愿不去。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-13 23:47 bneliao
            從計(jì)算理論說(shuō),沒有遞歸或循環(huán)迭代是不能實(shí)現(xiàn)無(wú)窮有限數(shù)n的。

            構(gòu)造數(shù)組不過(guò)是用編譯器來(lái)實(shí)現(xiàn)吧了。

            不過(guò)也提供了一種途徑。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-14 09:39 夜弓
            @ZhouRui
            但是Java不能new 對(duì)象數(shù)組啊  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-14 17:05 ZhouRui
            @夜弓
            哦,曉得了,謝謝~  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-14 22:06 wuchang
            遞歸調(diào)用算不算循還?  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-15 17:19 abettor
            “你不得不使用hard code的方法Log方法的進(jìn)入和退出”

            其實(shí)Java有一個(gè)相當(dāng)NB的方式“Log方法的進(jìn)入和退出”,那就是大名鼎鼎的AOP。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-15 18:26 哈哈董波
            模板元被,這么簡(jiǎn)單。  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-17 11:35 tbyxyz
            #include <stdio.h>

            template<int N>
            struct Printer
            {
            static void Print()
            {
            printf("Hello World\n");
            Printer<N-1>::Print();
            }
            };

            template<>
            struct Printer<0>
            {
            static void Print()
            {
            }
            };

            int main()
            {
            Printer<10>::Print();
            }  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2009-01-19 17:46 giscn
            這種題目不好, 用C++不一定要用 meta program,對(duì)于新手有誤導(dǎo)性,熟練掌握C++最基本的東西是最重要的  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2011-03-08 10:56 tian Qingfei
            應(yīng)該是用遞歸:

            void f(int i) {
            if(i<0) return;
            else {
            printf("hello world!\n");
            return f(--i);
            }  回復(fù)  更多評(píng)論
              

            # re: 一道面試題想到的 2011-03-08 11:50 tian Qingfei
            這個(gè)也行,但比較不常用:
            template<int N>
            void doSomething() {
            cout<<"Hello world!"<<endl;
            doSomething<N-1>();
            }

            template<>
            void doSomething<0>() {
            return;
            }  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲国产精品热久久| 欧洲人妻丰满av无码久久不卡| 日本精品久久久久久久久免费| 精品久久久久久无码专区| 久久久久国产精品人妻| 2021国内精品久久久久久影院| 久久久精品波多野结衣| 91精品国产高清久久久久久国产嫩草| 久久A级毛片免费观看| 一本色道久久综合狠狠躁| 免费精品国产日韩热久久| 一级女性全黄久久生活片免费 | 久久久久久久免费视频| 伊人久久大香线蕉AV一区二区| 久久亚洲电影| 伊人久久大香线蕉成人| 久久久亚洲AV波多野结衣 | 性做久久久久久久久老女人| 精品久久久久久无码人妻蜜桃| 精品久久久久久无码中文野结衣| 久久r热这里有精品视频| 国内精品久久久久久不卡影院| 久久人人超碰精品CAOPOREN| 亚洲国产成人久久笫一页| 久久天天躁狠狠躁夜夜avapp| 日韩人妻无码一区二区三区久久| 麻豆AV一区二区三区久久| 久久精品国产99国产精偷| 大美女久久久久久j久久| 久久夜色精品国产| 午夜久久久久久禁播电影| 国产精品青草久久久久婷婷 | 91亚洲国产成人久久精品网址| 久久国产香蕉一区精品| 久久久久四虎国产精品| 亚洲成色999久久网站| 久久青青草原精品国产不卡| 久久天天躁狠狠躁夜夜躁2O2O| 国产精品免费久久久久电影网| 国内精品久久久久影院薰衣草 | 久久亚洲综合色一区二区三区|