大牛分享C++學(xué)習(xí)建議,從入門到精通速學(xué)的干貨阳柔,學(xué)到就是賺發(fā)了

C++學(xué)習(xí)建議

C++缺點(diǎn)之一焰枢,是相對(duì)許多語(yǔ)言復(fù)雜,而且難學(xué)難精舌剂。許多人說(shuō)學(xué)習(xí)C語(yǔ)言只需一本K&R《C程序設(shè)計(jì)語(yǔ)言》即可济锄,但C++書籍卻是多不勝數(shù)。我是從C進(jìn)入C++霍转,皆是靠閱讀自學(xué)荐绝。在此分享一點(diǎn)學(xué)習(xí)心得。個(gè)人認(rèn)為避消,學(xué)習(xí)C++可分為4個(gè)層次:

第一層次低滩,C++基礎(chǔ):挑選一本入門書籍,如《C++ Primer》岩喷、《C++大學(xué)教程》恕沫、或Stroustrup撰寫的經(jīng)典《C++程序設(shè)計(jì)語(yǔ)言》或他一年半前的新作《C++程序設(shè)計(jì)原理與實(shí)踐》,而一般C++課程也止于此纱意,另外《C++ 標(biāo)準(zhǔn)程序庫(kù)》及《The C++ Standard Library Extensions》可供參考婶溯;

創(chuàng)一個(gè)小群,供大家學(xué)習(xí)交流聊天

如果有對(duì)學(xué)C++方面有什么疑惑問(wèn)題的偷霉,或者有什么想說(shuō)的想聊的大家可以一起交流學(xué)習(xí)一起進(jìn)步呀迄委。

也希望大家對(duì)學(xué)C++能夠持之以恒

C++愛(ài)好群,

如果你想要學(xué)好C++最好加入一個(gè)組織类少,這樣大家學(xué)習(xí)的話就比較方便叙身,還能夠共同交流和分享資料,給你推薦一個(gè)學(xué)習(xí)的組織:快樂(lè)學(xué)習(xí)C++組織 可以點(diǎn)擊組織二字硫狞,可以直達(dá)


第二層次曲梗,正確高效地使用C++:此層次開(kāi)始必須自修,閱讀過(guò)《(More)Effective C++》妓忍、《(More)Exceptional C++》虏两、《Effective STL》及《C++編程規(guī)范》等,才適宜踏入專業(yè)C++開(kāi)發(fā)之路世剖;

第三層次定罢,深入了解C++:關(guān)于全局問(wèn)題可讀《深入探索C++對(duì)象模型》、《Imperfect C++》旁瘫、《C++沉思錄》祖凫、《STL源碼剖析》琼蚯,要挑戰(zhàn)智商,可看關(guān)于模版及模版元編程的書籍如《C++ Templates》惠况、《C++設(shè)計(jì)新思維》遭庶、《C++模版元編程》;

第四層次稠屠,研究C++:閱讀《C++語(yǔ)言的設(shè)計(jì)和演化》峦睡、《編程的本質(zhì)》(含STL設(shè)計(jì)背后的數(shù)學(xué)根基)、C++標(biāo)準(zhǔn)文件《ISO/IEC 14882:2003》权埠、C++標(biāo)準(zhǔn)委員會(huì)的提案書和報(bào)告書榨了、關(guān)于C++的學(xué)術(shù)文獻(xiàn)。

由于我主要是應(yīng)用C++攘蔽,大約只停留于第二龙屉、三個(gè)層次。然而满俗,C++只是軟件開(kāi)發(fā)的一環(huán)而已转捕,單憑語(yǔ)言并不能應(yīng)付業(yè)務(wù)和工程上的問(wèn)題。建議讀者不要強(qiáng)求幾年內(nèi)“徹底學(xué)會(huì)C++的知識(shí)”唆垃,到達(dá)第二層左右便從工作實(shí)戰(zhàn)中汲取經(jīng)驗(yàn)瓜富,有興趣才慢慢繼續(xù)學(xué)習(xí)更高層次的知識(shí)。雖然學(xué)習(xí)C++有難度降盹,但也是相當(dāng)有趣且有滿足感的。

C++的起源

在31年前(1979年)谤辜,一名剛獲得博士學(xué)位的研究員蓄坏,為了開(kāi)發(fā)一個(gè)軟件項(xiàng)目發(fā)明了一門新編程語(yǔ)言,該研究員名為Bjarne Stroustrup丑念,該門語(yǔ)言則命名為——C with classes涡戳,四年后改稱為C++。C++是一門通用編程語(yǔ)言脯倚,支持多種編程范式渔彰,包括過(guò)程式、面向?qū)ο?object-oriented programming, OP)推正、泛型(generic programming, GP)恍涂,后來(lái)為泛型而設(shè)計(jì)的模版,被發(fā)現(xiàn)及證明是圖靈完備的植榕,因此使C++亦可支持模版元編程范式(template metaprogramming, TMP)再沧。C++繼承了C的特色,既為高級(jí)語(yǔ)言尊残,又含低級(jí)語(yǔ)言功能炒瘸,可同時(shí)作為系統(tǒng)和應(yīng)用編程語(yǔ)言淤堵。

C++廣泛應(yīng)用在不同領(lǐng)域,使用者以數(shù)百萬(wàn)計(jì)顷扩。根據(jù)近十年的調(diào)查拐邪,C++的流行程度約穩(wěn)定排行第3位(于C/Java之后)。 C++經(jīng)歷長(zhǎng)期的實(shí)踐和演化隘截,才成為今日的樣貌扎阶。1998年,C++標(biāo)準(zhǔn)委員會(huì)排除萬(wàn)難技俐,使C++成為ISO標(biāo)準(zhǔn)(俗稱C++98)乘陪,當(dāng)中含非常強(qiáng)大的標(biāo)準(zhǔn)模版庫(kù)(standard template library, STL)。之后委員會(huì)在2005年提交了有關(guān)標(biāo)準(zhǔn)庫(kù)的第一個(gè)技術(shù)報(bào)告(簡(jiǎn)稱TR1)雕擂,并為下一個(gè)標(biāo)準(zhǔn)C++0x而努力啡邑。可惜C++0x并不能在200x年完成井赌,各界希望新標(biāo)準(zhǔn)能于2011年內(nèi)出臺(tái)谤逼。

流行的C++編譯器中,微軟Visual C++ 2010已實(shí)現(xiàn)部分C++0x語(yǔ)法并加入TR1擴(kuò)充庫(kù)仇穗,而gcc對(duì)C++0x語(yǔ)法和庫(kù)的支持比VC2010更多流部。

應(yīng)否選擇C++,哪些程序適宜使用C++?

C++并非萬(wàn)能丹纹坐,我按經(jīng)驗(yàn)舉出一些C++的適用時(shí)機(jī)枝冀。

C++適合構(gòu)造程序中需求較穩(wěn)定的部分,需求變化較大的部分可使用腳本語(yǔ)言耘子;

程序須盡量發(fā)揮硬件的最高性能果漾,且性能瓶頸在于CPU和內(nèi)存;

程序須頻繁地與操作系統(tǒng)或硬件溝通谷誓;

程序必須使用C++框架/庫(kù)绒障,如大部分游戲引擎(如Unreal/Source)及中間件(如Havok/FMOD),雖然有些C++庫(kù)提供其他語(yǔ)言的綁定捍歪,但通常原生的API性能最好户辱、最新;

項(xiàng)目中某個(gè)目標(biāo)平臺(tái)只提供C++編譯器的支持糙臼。

按應(yīng)用領(lǐng)域來(lái)說(shuō)庐镐,C++適用于開(kāi)發(fā)服務(wù)器軟件、桌面應(yīng)用变逃、游戲焚鹊、實(shí)時(shí)系統(tǒng)、高性能計(jì)算、嵌入式系統(tǒng)等末患。

使用C++還是C?

C++和C的設(shè)計(jì)哲學(xué)并不一樣研叫,兩者取舍不同,所以不同的程序員和軟件項(xiàng)目會(huì)有不同選擇璧针,難以一概而論嚷炉。與C++相比,C具備編譯速度快探橱、容易學(xué)習(xí)申屹、顯式描述程序細(xì)節(jié)、較少更新標(biāo)準(zhǔn)(后兩者也可同時(shí)視為缺點(diǎn))等優(yōu)點(diǎn)隧膏。在語(yǔ)言層面上哗讥,C++包含絕大部分C語(yǔ)言的功能(例外之一,C++沒(méi)有C99的變長(zhǎng)數(shù)組VLA)胞枕,且提供OOP和GP的特性杆煞。

但其實(shí)用C也可實(shí)現(xiàn)OOP思想,亦可利用宏去實(shí)現(xiàn)某程度的GP腐泻,只不過(guò)C++的語(yǔ)法能較簡(jiǎn)潔决乎、自動(dòng)地實(shí)現(xiàn)OOP/GP。C++的RAII(resource acquisition is initialization派桩,資源獲取就是初始化)特性比較獨(dú)特构诚,C/C#/Java沒(méi)有相應(yīng)功能∶螅回顧歷史范嘱,Stroustrup開(kāi)發(fā)的早期C++編譯器Cpre/Cfront是把C++源代碼翻譯為C,再用C編譯器編譯的员魏。

由此可知丑蛤,C++編寫的程序,都能用等效的C程序代替逆趋,但C++在語(yǔ)言層面上提供了OOP/GP語(yǔ)法、更嚴(yán)格的類型檢查系統(tǒng)晒奕、大量額外的語(yǔ)言特性(如異常闻书、RTTI等),并且C++標(biāo)準(zhǔn)庫(kù)也較豐富脑慧。有時(shí)候C++的語(yǔ)法可使程序更簡(jiǎn)潔魄眉,如運(yùn)算符重載、隱式轉(zhuǎn)換闷袒。

但另一方面坑律,C語(yǔ)言的API通常比C++簡(jiǎn)潔,能較容易供其他語(yǔ)言程序調(diào)用囊骤。因此晃择,一些C++庫(kù)會(huì)提供C的API封裝冀值,同時(shí)也可供C程序調(diào)用。相反班缎,有時(shí)候也會(huì)把C的API封裝成C++形式肺稀,以支持RAII和其他C++庫(kù)整合等裆悄。

為何C++性能可優(yōu)于其他語(yǔ)言?

相對(duì)運(yùn)行于虛擬機(jī)語(yǔ)言(如C#/Java),C/C++直接以靜態(tài)形式把源程序編譯為目標(biāo)平臺(tái)的機(jī)器碼抵栈。一般而言,C/C++程序在編譯及鏈接時(shí)可進(jìn)行的優(yōu)化最豐富坤次,啟動(dòng)時(shí)的速度最快古劲,運(yùn)行時(shí)的額外內(nèi)存開(kāi)銷最少。而C/C++相對(duì)動(dòng)態(tài)語(yǔ)言(如Python/Lua)也減少了運(yùn)行時(shí)的動(dòng)態(tài)類型檢測(cè)缰猴。此外产艾,C/C++的運(yùn)行行為是確定的,且不會(huì)有額外行為(例如C#/Java必然會(huì)初始化變量)洛波,也不會(huì)有如垃圾收集(GC)而造成的不確定性延遲胰舆,而且C/C++的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中的布局也是確定的。有時(shí)C++的一些功能會(huì)使程序性能優(yōu)于C蹬挤,當(dāng)中以內(nèi)聯(lián)和模版最為突出缚窿,這兩項(xiàng)功能使C++標(biāo)準(zhǔn)庫(kù)的sort()通常比C標(biāo)準(zhǔn)庫(kù)的qsort()快多倍(C可用宏或人手編碼去解決此問(wèn)題)。

另一方面焰扳,C/C++能直接映射機(jī)器碼倦零,之間沒(méi)有另一層中間語(yǔ)言,因此可以做底層優(yōu)化吨悍,例如使用內(nèi)部(intrinsic)函數(shù)和嵌入?yún)R編語(yǔ)言扫茅。然而,許多C++的性能優(yōu)點(diǎn)并非免費(fèi)午餐育瓜,代價(jià)包括較長(zhǎng)的編譯鏈接時(shí)間和較易出錯(cuò)葫隙,因而增加開(kāi)發(fā)時(shí)間和成本,這點(diǎn)稍后補(bǔ)充躏仇。

我進(jìn)行了一個(gè)簡(jiǎn)單全局渲染性能測(cè)試(512x512像素恋脚,每像素10000個(gè)采樣),C++ 1小時(shí)36分焰手、Java 3小時(shí)18分糟描、Python約18天、Ruby約351天书妻。評(píng)測(cè)方式和其他語(yǔ)言的結(jié)果詳見(jiàn)博文船响。

C++常見(jiàn)問(wèn)題

C++源代碼跨平臺(tái)嗎?

C++有不錯(cuò)的跨平臺(tái)能力,但由于直接映射硬件,因性能優(yōu)化的關(guān)系见间,跨平臺(tái)能力不及Java及多數(shù)腳本語(yǔ)言聊闯。然而,實(shí)踐跨平臺(tái)的C++軟件還是可行的缤剧,但須注意以下問(wèn)題:

C++標(biāo)準(zhǔn)沒(méi)有規(guī)定原始數(shù)據(jù)類型(如int)的大小馅袁,需要特定大小的類型時(shí),可自訂類型(如int32_t)荒辕,同時(shí)對(duì)任何類型使用sizeof()而不假設(shè)其大泻瓜;

字節(jié)序(byte order)按CPU有所不同抵窒,特別要注意二進(jìn)制輸入輸出弛针、reinterpret_cast法;

原始數(shù)據(jù)和結(jié)構(gòu)類型的地址對(duì)齊有差異李皇;

編譯器提供的一些編譯器或平臺(tái)專用擴(kuò)充指令削茁;

避免作應(yīng)用二進(jìn)制接口(application binary interface, ABI)的假設(shè),例如調(diào)用函數(shù)時(shí)參數(shù)的取值順序在C/C++中沒(méi)定義掉房,在C++中也不可隨便假設(shè)RTTI/虛表等實(shí)現(xiàn)方式茧跋。

總括而言,跨平臺(tái)C++軟件可在頭文件中用宏檢測(cè)編譯器和平臺(tái)卓囚,再用宏瘾杭、typedef、自定平臺(tái)相關(guān)實(shí)現(xiàn)等方法去實(shí)踐跨平臺(tái)哪亿,C++標(biāo)準(zhǔn)不會(huì)提供這類幫助粥烁。

C++程序容易崩潰?

和許多語(yǔ)言相比,C/C++提供不安全的功能以最優(yōu)化性能蝇棉,有可能造成崩潰讨阻。但要注意,很多運(yùn)行時(shí)錯(cuò)誤篡殷,如向空指針/引用解引用钝吮、數(shù)組越界、堆棧溢出等板辽,其他語(yǔ)言也會(huì)報(bào)錯(cuò)或拋出異常奇瘦,這些都是程序問(wèn)題,而不是語(yǔ)言本身的問(wèn)題戳气。有些意見(jiàn)認(rèn)為链患,出現(xiàn)這類運(yùn)行時(shí)錯(cuò)誤巧鸭,應(yīng)該盡量寫入日志并立即崩潰瓶您,不該讓程序繼續(xù)運(yùn)行,以免造成更大的影響(例如程序繼續(xù)把內(nèi)存中錯(cuò)誤的數(shù)據(jù)覆寫文件)。若要容錯(cuò)呀袱,可按業(yè)務(wù)把程序分割為多進(jìn)程贸毕,像Chrome或使用fork()的形式。

然而夜赵,C++有許多機(jī)制可以減少錯(cuò)誤明棍,例如以string代替C字符串;以vector或array(TR1)代替原始數(shù)組(有些實(shí)現(xiàn)可在調(diào)試模式檢測(cè)越界)寇僧;使用智能指針也能減少一些原始指針的問(wèn)題摊腋。另外,我最常遇到的Bug嘁傀,就是沒(méi)有初始化成員變量兴蒸,有時(shí)會(huì)導(dǎo)致崩潰,而且調(diào)試版和發(fā)行版的行為可能不同细办。

C++要手動(dòng)做內(nèi)存管理?

C++同時(shí)提供在堆棧上的自動(dòng)局部變量橙凳,以及從自由存儲(chǔ)(free store)分配的對(duì)象。對(duì)于后者笑撞,程序員需手動(dòng)釋放岛啸,或使用不同的容器和智能指針。 C++程序員經(jīng)常進(jìn)一步優(yōu)化內(nèi)存茴肥,自定義內(nèi)存分配策略以提升效能坚踩,例如使用對(duì)象池、自定義的單向/雙向堆棧區(qū)等炉爆。雖然C++0x還沒(méi)加入GC功能堕虹,但也可以自行編寫或使用現(xiàn)成庫(kù)。此外芬首,C/C++也可以直接使用操作系統(tǒng)提供的內(nèi)存相關(guān)功能赴捞,例如內(nèi)存映射文件、共享內(nèi)存等郁稍。

使用C++常要重造輪子?

我曾參與的C++項(xiàng)目赦政,都會(huì)重造不少標(biāo)準(zhǔn)庫(kù)已提供的功能,此情況在其他語(yǔ)言中較少出現(xiàn)耀怜。我試圖分析個(gè)中原因恢着。首先,C++標(biāo)準(zhǔn)庫(kù)相對(duì)很多語(yǔ)言來(lái)說(shuō)是貧乏的财破,各開(kāi)發(fā)者便會(huì)重復(fù)地制造自訂庫(kù)掰派。從另一個(gè)角度看,C++標(biāo)準(zhǔn)庫(kù)是用C++編寫的(很多其他語(yǔ)言不用自身而是用C/C++去編寫庫(kù))左痢,在能力和性能上靡羡,自訂庫(kù)和標(biāo)準(zhǔn)庫(kù)并無(wú)本質(zhì)差別系洛;另外,標(biāo)準(zhǔn)庫(kù)為通用而設(shè)略步,對(duì)不同平臺(tái)及多種使用需求作取舍描扯,性能上有所影響,例如EA公司就曾發(fā)表自制的EASTL規(guī)格趟薄,描述游戲開(kāi)發(fā)方面對(duì)STL的性能及功能需求的特點(diǎn)绽诚;此外,多個(gè)C++庫(kù)一起使用杭煎,經(jīng)常會(huì)因規(guī)范不同而引起沖突恩够,又或功能重疊,所以項(xiàng)目可能須自行開(kāi)發(fā)羡铲,或引入其他庫(kù)的概念或?qū)崿F(xiàn)(如Boost/TR1/Loki)玫鸟,改寫以符合項(xiàng)目規(guī)范。

C++編譯速度很慢?

錯(cuò)犀勒,是非常慢屎飘。我認(rèn)為C++可能是實(shí)用程序語(yǔ)言中編譯速度最慢的。此問(wèn)題涉及C++沿用C的編譯鏈接方式贾费,又加入了復(fù)雜的類/泛型聲明和內(nèi)聯(lián)機(jī)制钦购,使編譯時(shí)間倍增。在C++對(duì)編譯方法改革之前(如module提案)褂萧,可使用以下技巧改善:第一押桃,使用pimpl手法,因性能損耗應(yīng)用于調(diào)用次數(shù)不多的類导犹;第二唱凯,僅包含必要頭文件,并盡量使用及提供前置聲明版本的頭文件(如iosfwd)谎痢;第三采用基于接口的設(shè)計(jì)磕昼,但須注意虛函數(shù)調(diào)用成本;第四节猿,采用unity build票从,即把多個(gè)cpp文件結(jié)合在一個(gè)編譯單元進(jìn)行編譯;第五滨嘱,采用分布式生成系統(tǒng)如IncrediBuild峰鄙。

C++缺乏什么功能?

雖然C++已經(jīng)非常復(fù)雜,但仍缺少很多常見(jiàn)功能太雨。 C++0x作出了不少改善吟榴,例如語(yǔ)言方面加入Lambda函數(shù)、閉包囊扳、類型推導(dǎo)聲明等吩翻,而庫(kù)方面則加入正則表達(dá)式梅惯、采用哈希表的unordered_set/unordered_map、引用計(jì)數(shù)智能指針shared_ptr/weak_ptr等仿野。但最值得留意的是C++0x引入多線程的語(yǔ)法和庫(kù)功能,這是C++演進(jìn)的一大步她君。然而脚作,模組、GC缔刹、反射機(jī)制等功能雖有提案球涛,卻未加進(jìn)C++0x。

C++使用建議

為應(yīng)用挑選特性集

我同意Stroustrup關(guān)于使用C++各種技術(shù)的回應(yīng):“你可以做校镐,不意味著你必須這么做亿扁。(Just because you can do it, doesn't mean that you have to.)” C++充滿豐富的特性,但同時(shí)帶來(lái)不同問(wèn)題鸟廓,例如過(guò)分復(fù)雜从祝、編譯及運(yùn)行性能的損耗。一般可考慮是否使用多重繼承引谜、異常牍陌、RTTI,并調(diào)節(jié)使用模版及模版元編程的程度员咽。使用過(guò)分復(fù)雜的設(shè)計(jì)和功能毒涧,可能會(huì)令部分團(tuán)隊(duì)成員更難理解和維護(hù)。

為團(tuán)隊(duì)建立編程規(guī)范

C++的編碼自由度很高贝室,容易編寫風(fēng)格迥異的代碼契讲,C++本身也沒(méi)有定義一些標(biāo)準(zhǔn)規(guī)范。而且滑频,C++的源文件物理構(gòu)成捡偏,較許多語(yǔ)言復(fù)雜。因此峡迷,除了決定特性集霹琼,每個(gè)團(tuán)隊(duì)?wèi)?yīng)建立一套編程規(guī)范,包括源文件格式(可使用文件模版)凉当、花括號(hào)風(fēng)格枣申。

盡量使用C++風(fēng)格而非C風(fēng)格

由于C++有對(duì)C兼容的包袱,一些功能可以使用C風(fēng)格實(shí)現(xiàn)看杭,但最好使用C++提供的新功能忠藤。最基本的是盡量以具名常量、內(nèi)聯(lián)函數(shù)和泛型取代宏楼雹,只把宏用在條件式編譯及特殊情況模孩。舊式的C要求局部變量聲明在作用域開(kāi)端尖阔,C++則無(wú)此限制,應(yīng)把變量聲明盡量置于鄰近其使用的地方榨咐,for()的循環(huán)變量聲明可置于for的括號(hào)內(nèi)介却。 C++中能加強(qiáng)類型安全的功能應(yīng)盡量使用,例如避免“萬(wàn)能”指針void *块茁,而使用個(gè)別或泛型類型齿坷;用bool而非int表示布爾值;選用4種C++ cast關(guān)鍵字代替簡(jiǎn)單的強(qiáng)制轉(zhuǎn)換数焊。

結(jié)合其他語(yǔ)言

如前文所述永淌,C++并非適合所有應(yīng)用情境,有時(shí)可以混合其他語(yǔ)言使用佩耳,包括用C++擴(kuò)展其他語(yǔ)言遂蛀,或在C++程序中嵌入腳本語(yǔ)言引擎。對(duì)于后者干厚,除了使用各種腳本語(yǔ)言的專門API李滴,還可使用Boost或SWIG作整合。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛮瞄,一起剝皮案震驚了整個(gè)濱河市悬嗓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裕坊,老刑警劉巖包竹,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異籍凝,居然都是意外死亡周瞎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門饵蒂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)声诸,“玉大人,你說(shuō)我怎么就攤上這事退盯”宋冢” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵渊迁,是天一觀的道長(zhǎng)慰照。 經(jīng)常有香客問(wèn)我,道長(zhǎng)琉朽,這世上最難降的妖魔是什么毒租? 我笑而不...
    開(kāi)封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮箱叁,結(jié)果婚禮上墅垮,老公的妹妹穿的比我還像新娘惕医。我一直安慰自己,他們只是感情好算色,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布抬伺。 她就那樣靜靜地躺著,像睡著了一般灾梦。 火紅的嫁衣襯著肌膚如雪峡钓。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天斥废,我揣著相機(jī)與錄音,去河邊找鬼给郊。 笑死牡肉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淆九。 我是一名探鬼主播统锤,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炭庙!你這毒婦竟也來(lái)了饲窿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤焕蹄,失蹤者是張志新(化名)和其女友劉穎逾雄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腻脏,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸦泳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了永品。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片做鹰。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鼎姐,靈堂內(nèi)的尸體忽然破棺而出钾麸,到底是詐尸還是另有隱情,我是刑警寧澤炕桨,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布饭尝,位于F島的核電站,受9級(jí)特大地震影響献宫,放射性物質(zhì)發(fā)生泄漏芋肠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一遵蚜、第九天 我趴在偏房一處隱蔽的房頂上張望帖池。 院中可真熱鬧奈惑,春花似錦、人聲如沸睡汹。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)囚巴。三九已至原在,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彤叉,已是汗流浹背庶柿。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秽浇,地道東北人浮庐。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像柬焕,于是被迫代替她去往敵國(guó)和親审残。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容