C/C++中的const的用法

來說下c/c++中的const的用法。
在英語中常數(shù)的一種表達(dá)是“中的const的”肠牲,在編程中可能是借用了這個(gè)單詞(我猜的哈)。代表常量,不可改變的意思,在c/c++中力奋,const表示的也是不可改變的意思(當(dāng)然我們也有一些方法來對(duì)它進(jìn)行改變)藕届。

  • 什么是const?
    常類型是指使用類型修飾符const說明的類型踏兜,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓碌陌送骸#ó?dāng)然碱妆,我們可以偷梁換柱進(jìn)行更新:)

  • 為什么引入const?
    const 推出的初始目的昔驱,正是為了取代預(yù)編譯指令疹尾,消除它的缺點(diǎn),同時(shí)繼承它的優(yōu)點(diǎn)骤肛。

  • cons有什么主要的作用纳本?

    • 可以定義const常量,具有不可變性腋颠。
      例如:

    const int Max=100;
    int Array[Max];

    • 便于進(jìn)行類型檢查繁成,使編譯器對(duì)處理內(nèi)容有更多了解,消除了一些隱患淑玫。

    void f(const int i)
    {
    ??.........
    }

    編譯器就會(huì)知道i是一個(gè)常量巾腕,不允許修改面睛;

    • 可以避免意義模糊的數(shù)字出現(xiàn),同樣可以很方便地進(jìn)行參數(shù)的調(diào)整和修改祠墅。
      同宏定義一樣侮穿,可以做到不變則已,一變都變毁嗦!如果想修改Max的內(nèi)容亲茅,只需要

      const int Max=you want;

    • 可以保護(hù)被修飾的東西,防止意外的修改狗准,增強(qiáng)程序的健壯性克锣。
      如果在函數(shù)體內(nèi)修改了i,編譯器就會(huì)報(bào)錯(cuò)腔长; 例如

      void f(const int i)
      {
      i=10;//error!
      }

    • 為函數(shù)重載提供了一個(gè)參考袭祟。 關(guān)于函數(shù)重載等下還要說明

      class A
      { ......
      ??void f(int i)
      ??{
      ??......
      ??} //一個(gè)函數(shù)
      ??void f(int i) const
      ??{
      ??......
      ??} //上一個(gè)函數(shù)的重載 ......
      };

    • 可以節(jié)省空間,避免不必要的內(nèi)存分配捞附。

      #define PI 3.14159 //常量宏
      const doulbe Pi=3.14159; //此時(shí)并未將Pi放入ROM中 ......
      double i=Pi; //此時(shí)為Pi分配內(nèi)存巾乳,以后不再分配!
      double I=PI; //編譯期間進(jìn)行宏替換鸟召,分配內(nèi)存
      double j=Pi; //沒有內(nèi)存分配
      double J=PI; //再進(jìn)行宏替換胆绊,又一次分配內(nèi)存!

      const定義常量從匯編的角度來看欧募,只是給出了對(duì)應(yīng)的內(nèi)存地址压状,而不是象#define一樣給出的是立即數(shù),所以跟继,const定義的常量在程序運(yùn)行過程中只有一份拷貝种冬,而#define定義的常量在內(nèi)存中有若干個(gè)拷貝。

    • 提高了效率舔糖。
      編譯器通常不為普通const常量分配存儲(chǔ)空間娱两,而是將它們保存在符號(hào)表中,這使得它成為一個(gè)編譯期間的常量金吗,沒有了存儲(chǔ)與讀內(nèi)存的操作谷婆,使得它的效率也很高。

  • 如何使用const辽聊?

    • 修飾一般常量 一般常量是指簡單類型的常量。這種常量在定義時(shí)期贫,修飾符const可以用在類型說明符前跟匆,也可以用在類型說明符后。

      int const x=2;
      const int x=2;

    • 修飾常數(shù)組 定義或說明一個(gè)常數(shù)組可采用如下格式:

      int const a[5]={1, 2, 3, 4, 5};
      const int a[5]={1, 2, 3, 4, 5};

    • 修飾常對(duì)象 常對(duì)象是指對(duì)象常量通砍,定義格式如下:

      class A;
      const A a;

      A const a; 定義常對(duì)象時(shí)玛臂,同樣要進(jìn)行初始化烤蜕,并且該對(duì)象不能再被更新,修飾符const可以放在類名后面迹冤,也可以放在類名前面讽营。

    • 修飾常指針

      const int *A; //const修飾指向的對(duì)象,A可變泡徙,A指向的對(duì)象不可變
      int const *A; //const修飾指向的對(duì)象橱鹏,A可變,A指向的對(duì)象不可變
      int *const A; //const修飾指針A堪藐, A不可變莉兰,A指向的對(duì)象可變
      const int *const A;//指針A和A指向的對(duì)象都不可變
      - 修飾常引用 使用const修飾符也可以說明引用,被說明的引用為常引用礁竞,該引用所引用的對(duì)象不能被更新糖荒。其定義格式如下:
      > const double & v;
      - 修飾函數(shù)的常參數(shù) const修飾符也可以修飾函數(shù)的傳遞參數(shù),格式如下:
      > void Fun(const int Var);

      告訴編譯器Var在函數(shù)體中的無法改變模捂,從而防止了使用者的一些無意的或錯(cuò)誤的修改捶朵。

    • 修飾函數(shù)的返回值: const修飾符也可以修飾函數(shù)的返回值,是返回值不可被改變狂男,格式如下:

      const int Fun1();
      const MyClass Fun2();
      - 修飾類的成員函數(shù): const修飾符也可以修飾類的成員函數(shù)综看,格式如下:

      class ClassName
      {
      ?? public:
      ???? int Fun() const;
      ??.....
      };
      //這樣并淋,在調(diào)用函數(shù)Fun時(shí)就不能修改類里面的數(shù)據(jù)

    • 在另一連接文件中引用const常量

      extern const int i;//正確的引用
      extern const int j=10;//錯(cuò)誤寓搬!

      常量不可以被再次賦值 另外,還要注意县耽,常量必須初始化句喷! 例如:

      const int i=5;

  • 幾點(diǎn)值得討論的地方:

    • const究竟意味著什么?
      說了這么多兔毙,const意味著什么唾琼?一種修飾符?接口抽象澎剥?一種新類型锡溯? 也許都是,在Stroustup最初引入這個(gè)關(guān)鍵字時(shí)哑姚,只是為對(duì)象放入ROM做出了一種可能祭饭,對(duì)于const對(duì)象,C++既允許對(duì)其進(jìn)行靜態(tài)初始化叙量,也允許對(duì)他進(jìn)行動(dòng)態(tài)初始化倡蝙。理想的const對(duì)象應(yīng)該在其構(gòu)造函數(shù)完成之前都是可寫的,在析夠函數(shù)執(zhí)行開始后也都是可寫的绞佩,換句話說寺鸥,const對(duì)象具有從構(gòu)造函數(shù)完成到析夠函數(shù)執(zhí)行之前的不變性猪钮,如果違反了這條規(guī)則,結(jié)果都是未定義的胆建!雖然我們把const放入ROM中烤低,但這并不能夠保證const的任何形式的墮落,我們后面會(huì)給出具體的辦法笆载。無論const對(duì)象被放入ROM中漩绵,還是通過存儲(chǔ)保護(hù)機(jī)制加以保護(hù)吴裤,都只能保證,對(duì)于用戶而言這個(gè)對(duì)象沒有改變。換句話說汰现,廢料收集器或數(shù)據(jù)庫系統(tǒng)對(duì)一個(gè)const的修改怎沒有任何問題飘言。

    • 位元const V.S. 抽象const?
      對(duì)于關(guān)鍵字const的解釋有好幾種方式霹娄,最常見的就是位元const 和 抽象const质礼。下面我們看一個(gè)例子:

      class A
      {
      ??public:
      ??......
      ??A f(const A& a);
      ??......
      };

      如果采用抽象const進(jìn)行解釋,那就是f函數(shù)不會(huì)去改變所引用對(duì)象的抽象值缀拭,如果采用位元const進(jìn)行解釋咳短,那就成了f函數(shù)不會(huì)去改變所引用對(duì)象的任何位元。 我們可以看到位元解釋正是c++對(duì)const問題的定義蛛淋,const成員函數(shù)不被允許修改它所在對(duì)象的任何一個(gè)數(shù)據(jù)成員咙好。 為什么這樣呢?因?yàn)槭褂梦辉猚onst有2個(gè)好處: 最大的好處是可以很容易地檢測到違反位元const規(guī)定的事件:編譯器只用去尋找有沒有對(duì)數(shù)據(jù)成員的賦值就可以了褐荷。另外勾效,如果我們采用了位元const,那么叛甫,對(duì)于一些比較簡單的const對(duì)象层宫,我們就可以把它安全的放入ROM中,對(duì)于一些程序而言其监,這無疑是一個(gè)很重要的優(yōu)化方式萌腿。(關(guān)于優(yōu)化處理,我們到時(shí)候?qū)iT進(jìn)行討論) 當(dāng)然抖苦,位元const也有缺點(diǎn)毁菱,要不然,抽象const也就沒有產(chǎn)生的必要了锌历。 首先贮庞,位元const的抽象性比抽象const的級(jí)別更低!實(shí)際上究西,大家都知道窗慎,一個(gè)庫接口的抽象性級(jí)別越低,使用這個(gè)庫就越困難怔揩。 其次捉邢,使用位元const的庫接口會(huì)暴露庫的一些實(shí)現(xiàn)細(xì)節(jié),而這往往會(huì)帶來一些負(fù)面效應(yīng)商膊。所以伏伐,在庫接口和程序?qū)崿F(xiàn)細(xì)節(jié)上,我們都應(yīng)該采用抽象const晕拆。 有時(shí)藐翎,我們可能希望對(duì)const做出一些其它的解釋,那么实幕,就要注意了吝镣,目前,大多數(shù)對(duì)const的解釋都是類型不安全的昆庇,這里我們就不舉例子了末贾,你可以自己考慮一下,總之整吆,我們盡量避免對(duì)const的重新解釋拱撵。

    • 放在類內(nèi)部的常量有什么限制?
      看看下面這個(gè)例子:

      class A {
      ??private:
      ????const int c3 = 7; // ???
      ????static int c4 = 7; // ???
      ????static const float c5 = 7; // ??? ......
      };

      上面的3句都不對(duì)表蝙!使用這種類內(nèi)部的初始化語法的時(shí)候拴测,常量必須是被一個(gè)常量表達(dá)式初始化的整型或枚舉類型,而且必須是static和const形式府蛇。這顯然是一個(gè)很嚴(yán)重的限制集索! 那么,我們的標(biāo)準(zhǔn)委員會(huì)為什么做這樣的規(guī)定呢汇跨?一般來說务荆,類在一個(gè)頭文件中被聲明,而頭文件被包含到許多互相調(diào)用的單元去扰法。但是蛹含,為了避免復(fù)雜的編譯器規(guī)則,C++要求每一個(gè)對(duì)象只有一個(gè)單獨(dú)的定義塞颁。如果C++允許在類內(nèi)部定義一個(gè)和對(duì)象一樣占據(jù)內(nèi)存的實(shí)體的話浦箱,這種規(guī)則就被破壞了。

    • 如何初始化類內(nèi)部的常量祠锣?

      • 一種方法就是static 和 const 并用酷窥,在內(nèi)部初始化,如上面的例子伴网;
      • 另一個(gè)很常見的方法就是初始化列表:

        class A {
        ??public:
        ????A(int i=0):test(i)
        ????{
        ????}
        ??private:
        ????const int i;
        }蓬推;
        - 還有一種方式就是在外部初始化,例如:

    > class A

{
??public:
????A()
????{
????}
??private:
????static const int i;//注意必須是靜態(tài)的澡腾!
}沸伏;
const int A::i=3;
- 常量與數(shù)組的組合有什么特殊嗎糕珊? 我們給出下面的代碼:
>const int size[3]={10,20,50};
int array[size[2]];

  有什么問題嗎?對(duì)了毅糟,編譯通不過红选!為什么呢? Const可以用于集合姆另,但編譯器不能把一個(gè)集合存放在它的符號(hào)表里喇肋,所以必須分配內(nèi)存。在這種情況下迹辐,const意味著“不能改變的一塊存儲(chǔ)”蝶防。然而,其值在編譯時(shí)不能被使用明吩,因?yàn)榫幾g器在編譯時(shí)不需要知道存儲(chǔ)的內(nèi)容间学。自然,作為數(shù)組的大小就不行了:)


  > class A

{
??public:
????A(int i=0):test[2]({1,2}) {}//你認(rèn)為行嗎贺喝?
??private:
????const int test[2];
}菱鸥;

  vc6下編譯通不過,為什么呢躏鱼? 關(guān)于這個(gè)問題氮采,前些時(shí)間,自己猜想了下染苛,給出了一下解釋鹊漠,大家可以看看:我們知道編譯器堆初始化列表的操作是在構(gòu)造函數(shù)之內(nèi),顯式調(diào)用可用代碼之前茶行,初始化的次序依據(jù)數(shù)據(jù)聲明的次序躯概。初始化時(shí)機(jī)應(yīng)該沒有什么問題,那么就只有是編譯器對(duì)數(shù)組做了什么手腳畔师!其實(shí)做什么手腳娶靡,我也不知道,我只好對(duì)他進(jìn)行猜測:編譯器搜索到test發(fā)現(xiàn)是一個(gè)非靜態(tài)的數(shù)組看锉,于是姿锭,為他分配內(nèi)存空間,這里需要注意了伯铣,它應(yīng)該是一下分配完呻此,并非先分配test[0],然后利用初始化列表初始化,再分配test[1],這就導(dǎo)致數(shù)組的初始化實(shí)際上是賦值腔寡!然而焚鲜,常量不允許賦值,所以無法通過。 其實(shí)是不對(duì)的忿磅,正確的是:C++標(biāo)準(zhǔn)有一個(gè)規(guī)定糯彬,不允許無序?qū)ο笤陬悆?nèi)部初始化,數(shù)組顯然是一個(gè)無序的葱她,所以這樣的初始化是錯(cuò)誤的情连!對(duì)于他,只能在類的外部進(jìn)行初始化览效,如果想讓它通過,只需要聲明為靜態(tài)的虫几,然后初始化锤灿。 這里我們看到,常量與數(shù)組的組合沒有什么特殊辆脸!一切都是數(shù)組惹的禍但校!



- this指針是不是const類型的?
this指針是一個(gè)很重要的概念啡氢,那該如何理解她呢状囱?也許這個(gè)話題太大了,那我們縮小一些:this指針是個(gè)什么類型的倘是?這要看具體情況:如果在非const成員函數(shù)中亭枷,this指針只是一個(gè)類類型的;如果在const成員函數(shù)中搀崭,this指針是一個(gè)const類類型的叨粘;如果在volatile成員函數(shù)中,this指針就是一個(gè)volatile類類型的。
- const到底是不是一個(gè)重載的參考對(duì)象瘤睹? (這個(gè)就是剛剛說的要再講下的重載)
先看一下下面的例子:
  > class A
  {

??......
??void f(int i)
??{
??......
??}//一個(gè)函數(shù)
??void f(int i) const
??{
??......
??}//上一個(gè)函數(shù)的重載
......
};

  上面是重載是沒有問題的了升敲,那么下面的呢?
  >class A

{
??......
??void f(int i)
????{
????......
????}//一個(gè)函數(shù)
??void f(const int i)
??{
????......
??}//轰传?驴党??获茬?港庄?
??......
};

  這個(gè)是錯(cuò)誤的,編譯通不過锦茁。那么是不是說明內(nèi)部參數(shù)的const不予重載呢攘轩?再看下面的例子:
  > class A
{

??......
??void f(int& )
??{
????......
??}//一個(gè)函數(shù)
??void f(const int& )
??{
????......
??}//?码俩?度帮???
??......
};

  這個(gè)程序是正確的笨篷,看來上面的結(jié)論是錯(cuò)誤的瞳秽。為什么會(huì)這樣呢?這要涉及到接口的透明度問題率翅。按值傳遞時(shí)练俐,對(duì)用戶而言,這是透明的冕臭,用戶不知道函數(shù)對(duì)形參做了什么手腳腺晾,在這種情況下進(jìn)行重載是沒有意義的,所以規(guī)定不能重載辜贵!當(dāng)指針或引用被引入時(shí)悯蝉,用戶就會(huì)對(duì)函數(shù)的操作有了一定的了解,不再是透明的了托慨,這時(shí)重載是有意義的鼻由,所以規(guī)定可以重載。
  • 什么情況下為const分配內(nèi)存厚棵?
    以下是我想到的可能情況蕉世,當(dāng)然,有的編譯器進(jìn)行了優(yōu)化婆硬,可能不分配內(nèi)存狠轻。
    A、作為非靜態(tài)的類成員時(shí)彬犯;
    B哈误、用于集合時(shí);
    C躏嚎、被取地址時(shí)蜜自;
    D、在main函數(shù)體內(nèi)部通過函數(shù)來獲得值時(shí)卢佣;
    E重荠、const的 class或struct有用戶定義的構(gòu)造函數(shù)、析構(gòu)函數(shù)或基類時(shí)虚茶;
    F戈鲁、當(dāng)const的長度比計(jì)算機(jī)字長還長時(shí);
    G嘹叫、參數(shù)中的const婆殿;
    H、使用了extern時(shí)罩扇。 不知道還有沒有其他情況婆芦,歡迎高手指點(diǎn):)

  • 臨時(shí)變量到底是不是常量怕磨?
    很多情況下,編譯器必須建立臨時(shí)對(duì)象消约。像其他任何對(duì)象一樣肠鲫,它們需要存儲(chǔ)空間而且必須被構(gòu)造和刪除。區(qū)別是我們從來看不到編譯器負(fù)責(zé)決定它們的去留以及它們存在的細(xì)節(jié)或粮。對(duì)于C++標(biāo)準(zhǔn)草案而言:臨時(shí)對(duì)象自動(dòng)地成為常量导饲。因?yàn)槲覀兺ǔ=佑|不到臨時(shí)對(duì)象,不能使用與之相關(guān)的信息氯材,所以告訴臨時(shí)對(duì)象做一些改變有可能會(huì)出錯(cuò)渣锦。當(dāng)然,這與編譯器有關(guān)氢哮,例如:vc6泡挺、vc7都對(duì)此作了擴(kuò)展,所以命浴,用臨時(shí)對(duì)象做左值,編譯器并沒有報(bào)錯(cuò)贱除。

  • 與static搭配會(huì)不會(huì)有問題生闲?
    假設(shè)有一個(gè)類:

    class A
    {
    ??public:
    ????......
    ????static void f() const
    ??????{
    ????????......
    ??????}
    ????......
    };

    我們發(fā)現(xiàn)編譯器會(huì)報(bào)錯(cuò),因?yàn)樵谶@種情況下static不能夠與const共存月幌! 為什么呢碍讯?因?yàn)閟tatic沒有this指針,但是const修飾this指針扯躺,所以...

  • 如何修改常量捉兴?
    有時(shí)候我們卻不得不對(duì)類內(nèi)的數(shù)據(jù)進(jìn)行修改,但是我們的接口卻被聲明了const录语,那該怎么處理呢倍啥?

    • 標(biāo)準(zhǔn)用法:

      mutable class A {
      ??public:
      ????A(int i=0):test(i)
      ????{
      ????}
      ????void SetValue(int i)const
      ??????{
      ????????test=i;
      ??????}
      ????private: mutable int test;//這里處理!
      }澎埠;

    • 強(qiáng)制轉(zhuǎn)換:

      const_cast class A {
      ??public:
      ????A(int i=0):test(i)
      ????{
      ????}
      ????void SetValue(int i)const
      ????{
      ??????const_cast (test)=i;
      ????}//這里處理虽缕!
      ??private:
      ??????int test;
      };

    • 靈活的指針:

      int* class A
      {
      ??public:
      ????A(int i=0):test(i)
      ????{
      ????}
      ????void SetValue(int i)const
      ????{
      ???? ??test=i;
      ????}
      ??private:
      ????int
      test; //這里處理蒲稳!
      }氮趋;

    • 未定義的處理

      class A
      {
      ??public:
      ????A(int i=0):test(i)
      ????{
      ????}
      ????void SetValue(int i)const
      ????{
      ??????int p=(int)&test;
      ??????*p=i;
      ????}//這里處理!
      ??private:
      ????int test;
      }江耀;

      注意剩胁,這里雖然說可以這樣修改,但結(jié)果是未定義的祥国,避免使用昵观!

    • 內(nèi)部處理:this指針

      class A
      {
      ??public:
      ????A(int i=0):test(i)
      ????{
      ????}
      ????void SetValue(int i)const
      ????{
      ??????((A*)this)->test=i;
      ????}//這里處理!
      ??private:
      ????int test;
      };

    • 最另類的處理:空間布局

      class A
      {
      ??public:
      ????A(int i=0):test(i),c('a')
      ????{
      ???? }
      ??private:
      ????char c;
      ????const int test;
      };
      int main()
      {
      ??A a(3);
      ??A* pa=&a;
      ??char* p=(char)pa;
      ??int
      pi=(int)(p+4)索昂;//利用邊緣調(diào)整
      ??
      pi=5;//此處改變了test的值建车!
      ??return 0;
      }

      雖然我給出了6中方法,但是我只是想說明如何更改椒惨,但出了第一種用法之外缤至,另外5種用法,我們并不提倡康谆,不要因?yàn)槲疫@么寫了领斥,你就這么用,否則沃暗,我真是要誤人子弟了:)

  • 最后我們來討論一下常量對(duì)象的動(dòng)態(tài)創(chuàng)建月洛。 既然編譯器可以動(dòng)態(tài)初始化常量,就自然可以動(dòng)態(tài)創(chuàng)建孽锥,例如:

    const int* pi=new const int(10);

    這里要注意2點(diǎn):
    1)const對(duì)象必須被初始化嚼黔!所以(10)是不能夠少的。
    2)new返回的指針必須是const類型的惜辑。 那么我們可不可以動(dòng)態(tài)創(chuàng)建一個(gè)數(shù)組呢唬涧? 答案是否定的,因?yàn)閚ew內(nèi)置類型的數(shù)組盛撑,不能被初始化碎节。 這里我們忽視了數(shù)組是類類型的,同樣對(duì)于類內(nèi)部數(shù)組初始化我們也做出了這樣的忽視抵卫,因?yàn)檫@涉及到數(shù)組的問題狮荔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市介粘,隨后出現(xiàn)的幾起案子殖氏,更是在濱河造成了極大的恐慌,老刑警劉巖姻采,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件受葛,死亡現(xiàn)場離奇詭異,居然都是意外死亡偎谁,警方通過查閱死者的電腦和手機(jī)总滩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巡雨,“玉大人闰渔,你說我怎么就攤上這事☆硗” “怎么了冈涧?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵茂附,是天一觀的道長。 經(jīng)常有香客問我督弓,道長营曼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任愚隧,我火速辦了婚禮蒂阱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狂塘。我一直安慰自己录煤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布荞胡。 她就那樣靜靜地躺著妈踊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泪漂。 梳的紋絲不亂的頭發(fā)上廊营,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音萝勤,去河邊找鬼露筒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纵刘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荸哟,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼假哎,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了鞍历?” 一聲冷哼從身側(cè)響起舵抹,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劣砍,沒想到半個(gè)月后惧蛹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刑枝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年香嗓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片装畅。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡靠娱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掠兄,到底是詐尸還是另有隱情像云,我是刑警寧澤锌雀,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站迅诬,受9級(jí)特大地震影響腋逆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侈贷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一惩歉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铐维,春花似錦柬泽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睬棚,卻和暖如春第煮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抑党。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工包警, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人底靠。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓害晦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暑中。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壹瘟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • (1)可以定義 const 常量 (2)const 可以修飾函數(shù)的參數(shù)、返回值. 詳細(xì)內(nèi)容: 1鳄逾、什么是const...
    幽鬼09閱讀 706評(píng)論 0 4
  • C++中的const關(guān)鍵字的用法非常靈活稻轨,而使用const將大大改善程序的健壯性,本人根據(jù)各方面查到的資料進(jìn)行總結(jié)...
    Charliehhh閱讀 942評(píng)論 0 1
  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別雕凹? C沒有Protection行為...
    阿面a閱讀 7,643評(píng)論 0 10
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,763評(píng)論 0 38
  • C中常用:“ #define 變量名 變量值”定義一個(gè)值替代,然而卻有個(gè)致命缺點(diǎn):缺乏類型檢測機(jī)制,這樣預(yù)處理在C...
    ater_man閱讀 1,896評(píng)論 0 2