1. C、C++、C# 的區(qū)別在什么地方?

        共 3027字,需瀏覽 7分鐘

         ·

        2021-09-07 19:19

        星標(biāo)/置頂 公眾號??,硬核文章第一時間送達!



        案例一:


        任務(wù):把大象放到冰箱里。


        C:

        C語言是一個極其高冷的人,因此回答都是冷冷的:

        我:你好C語言,我想把大象放到冰箱里,幫我做好不好?

        C:好

        我:那我們要怎么做呢?

        C:猜

        我:額。。。是不是應(yīng)該先創(chuàng)造一只大象?

        C:是

        我:怎么創(chuàng)造呢?

        C:猜

        我只好去翻了一下文檔,哦,malloc一塊內(nèi)存啊。

        我:好的,我用malloc,申請一塊空間放大象好不好?

        C:好

        我:額。。。大象怎么構(gòu)造呢?

        C:猜

        我。。。去看了看大象的結(jié)構(gòu)

        我:好吧。。。我定義了一個大象的數(shù)據(jù)結(jié)構(gòu),接下來怎么做?

        C:猜

        我心里一陣說不出的感覺。。。

        我:哦好吧,我創(chuàng)造一個冰箱,步驟應(yīng)該和大象差不多。

        C:嗯

        我翻看了冰箱的結(jié)構(gòu),然后定義了一個冰箱的struct。

        我:好了,冰箱構(gòu)造出來了,怎么放呢?

        C:哼

        我。。。默默在Stack Overflow上輸入"如何把大象放進冰箱 C"。

        我:終于找到答案了,定義一個方法,把大象的鼻子放進去、眼睛放進去、耳朵放進去。OK,都放進去了。C,你輸出一下看看吧。

        C:燙燙燙燙燙燙燙

        我:哈哈哈哈C你終于不高冷了

        。。。

        我:哎,你咋不說話了?C?你發(fā)燒了嗎?

        立刻一盆水倒上去。

        結(jié)束。

        C++:

        C++是一個知識淵博的孩子,相對年輕,也沒那么高冷。

        我:C艸,我們把大象放冰箱好嗎?

        C++:滾

        說話的不高冷呢?

        我:額我錯了,親愛的C++,我們把大象放冰箱好吧。

        C++:好的么么噠,大象的數(shù)據(jù)類型已經(jīng)有人定義好了,冰箱也有人定義好了,你需要分別構(gòu)造一個哦。

        我:好的。

        于是我翻看了文檔后知道了用new來構(gòu)造

        我:OK,親愛的C++,我想構(gòu)造一個大象。

        C++:好的,構(gòu)造大象的方法有13個,請問你選擇哪一種呢?

        我。。。

        我:你介紹一下吧。

        C++:OK,首先可以在棧上面構(gòu)造,這么做的好處呢是可以方便資源管理,而且語法也好看一些,可以利用RAII,如果你不知道什么事RAII,你可以去cppreference上面查一下,當(dāng)然你也可以在堆上構(gòu)造,可以構(gòu)造一只很大很大的大象,還有。。。。。。。

        一個月過后,C++終于講完了。我也長滿了胡須。。。刮了胡子之后繼續(xù)工作

        我:好的,C++,我就在棧上面構(gòu)造一只大象吧。

        C++:你不愛我了。

        我:???

        C++:你都沒有說“親愛的”。

        我。。。

        我:好吧,親愛的C++,我想簡單構(gòu)造一只大象。

        C++:好的呢,你可以選擇構(gòu)造一只非洲象還是美洲象還是南極洲象,象的膚色是什么樣子的你可以設(shè)定一下,象的屁股大小你可以設(shè)定一下,象的性別和性取向你看要什么。。。。。。

        我:我就想要一只簡單的,默認(rèn)的就好。

        C++:好的,構(gòu)造出來了一只,你可以選擇怎么初始化它,有13種初始化方法,推薦使用最新的統(tǒng)一初始化。

        我。。。

        我:統(tǒng)一初始化

        C++:好的,我們可以構(gòu)造冰箱了。

        我:好。。。

        經(jīng)過一個月的選擇,終于構(gòu)造出了冰箱。

        C++:好的,冰箱提供了addElephant方法,可以直接使用哦。

        我:哇太棒了,好的,我就用這個方法。

        C++:這個方法提供了多種重載,可以拷貝,移動,也可以直接轉(zhuǎn)發(fā),省的在移入冰箱之前構(gòu)造一個大象。

        我:。。。你為啥不早說

        C++:你為啥不早問。

        我:就用移動的吧。

        C++:OK,請用std::move將構(gòu)造好的大象轉(zhuǎn)為右值引用。

        我一臉懵,但是還是照辦。

        我:好了

        C++:OK,開始放入冰箱了哦,速度極快的呢。

        突然

        C++:報錯了報錯了,分子和原子不是可以轉(zhuǎn)換的類型,大熊貓和愛迪生之間沒有+運算符等1556項錯誤。

        我。。。。。。。。。

        我:網(wǎng)上找資料,說看最后一行就差不多了,好的看看。嗯,看起來是第31行出錯了,錯誤是什么呢?報錯信息啥也沒說明白啊。隨便改改吧。編譯,運行。

        C++:好的,已經(jīng)將臀圍12米,左臂長13米,右臂長14米,喜歡公大象,沒有結(jié)婚生子,從小家教不錯,熟讀四書五經(jīng)的非洲母大象放入橘黃色,五十米高,六十米寬,三百米厚,溫度有零下三百度,制冷劑的牌子是湖澈牌,額定電壓220V的冰箱里。

        我。。。長舒了一口氣。

        C#:

        我:我想把大象放進冰箱。

        C#:好的主人,我爸爸微軟已經(jīng)寫好了大象類,也寫好了冰箱類,你只需new一下就好了。

        我:OK,new好了,放入冰箱。

        C#:好的,已經(jīng)放入,使用了冰箱的拓展方法addElephant<>()方法。

        我:嗯,你表現(xiàn)得很好,能不能放的稍微快點兒,剛剛C++放的就很快。

        C#:為了您的安全,不能。

        我:額。。。那我想調(diào)節(jié)一下大象耳朵的尺寸。

        C#:對不起,不能調(diào)節(jié)。您可以設(shè)定大象的耳朵形狀,已為您定義好多種耳朵形狀,您還可以調(diào)整大象的膚色,已為您定義好多種膚色。

        我:算了不調(diào)了,就這樣吧。

        C#:好的。如果您需要速度,或者需要對大象的每個細(xì)節(jié)進行把握,還可以去看看我的弟弟,C++/CLR,他可以完成您提出的這些功能。您也可以將他帶到我這里來,我們可以一起工作的。你也可以把C++完成的工作導(dǎo)出到二進制形式,我可以直接使用的。

        我:好的謝謝,不用了。

        C#:好的,祝您生活愉快。


        案例二:



        在遙遠(yuǎn)的地方,有三位大魔法師,吸引了許多學(xué)徒。

        第一位大魔法師叫C,他是這樣教學(xué)生的。
        "火球術(shù):"
        "首先,把提前寫好的符咒放在桌子上。"
        "然后,把左手抬起來。"
        "把右手抬起來。"
        "讓左手的位置下移3厘米。"
        ………
        ………
        ………
        省略大約100行。


        雖然這位魔法師的方法很麻煩。但是很快就能召喚出火球,同時以后重復(fù)這個步驟就可以召喚出火球。

        第二位大魔法師叫C++,是C的徒弟。
        他的火球術(shù)則是這樣的。
        "首先,用100個小時制作一張封裝的,美觀的,有注釋的符咒,然后專門寫一篇文檔描述它的外表。"
        "然后在上面寫上火球術(shù)三個字。"
        "扔出去。"
        這位大魔法師的火球術(shù)使用很方便,只不過制作過程過于繁瑣,并且有的時候可能會過十分鐘才出現(xiàn)火球。

        第三位大魔法師叫C#,據(jù)說是C和另一位姓J(rèn)的大魔法師的不清不楚的產(chǎn)物。
        他的火球術(shù)很簡單,只要喊一聲 火球!就可以了。
        只不過有一個致命的缺點。
        如果離他的距離超過了5米,那所有的法術(shù)都會失效并且出現(xiàn)一大堆紅色的寫著error的神秘符咒,據(jù)說那是異次元的魔鬼的產(chǎn)物。


        案例三:



        C就像一臺引擎裸露在外,輪子變速箱剎車傳動軸承都要自己裝的“車”,如果你是DIY狂人喜歡自己造車,你會喜歡C的;


        C++就像上面說的DIY狂人造出來的一臺馬力十足的跑車,包含了C的全部優(yōu)點外加一個外殼。開起來是瘋狂的野獸馬力十足,但是不是誰都能駕馭了,稍有不慎就會車毀人亡;


        C#就像一臺綜合性能非常好的轎跑,自動超速箱ABS防抱死空調(diào)音響一應(yīng)俱全。讓你輕松上路,怎么開怎么爽。但是你永遠(yuǎn)體會不到飆車的激情了,而且這車只能在特定公路開哦~


        往期推薦




        專輯 | 趣味設(shè)計模式
        專輯 | 音視頻開發(fā)
        專輯 | C++ 進階
        專輯 | 超硬核 Qt
        專輯 | 玩轉(zhuǎn) Linux
        專輯 | GitHub 開源推薦
        專輯 | 程序人生


        關(guān)注公眾「高效程序員」??,一起優(yōu)秀!

        回復(fù) “入群” 進技術(shù)交流群,回復(fù) “1024” 獲取海量學(xué)習(xí)資源。
        瀏覽 54
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 我在厨房摸岳的乳 | 午夜精品久久久久久久男人的天堂 | 男女做爱免费网站 | 男男视频h | 嗯啊亚洲 |