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

            大漠落日

            while(!dead) study++;
            posts - 46, comments - 126, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            C++規(guī)定,一個(gè)變量可以在程序范圍內(nèi)的任何地方定義,也就是說在這個(gè)變量定義之前編譯器是無法給它分配內(nèi)存空間的。在這點(diǎn)上和C不同,C強(qiáng)制要求變量的聲明和定義必須放在條件塊的開始。
            雖然如此,但是現(xiàn)在的C++編譯器通常像C編譯器一樣,在一個(gè)程序塊的開頭就分配好所有變量的內(nèi)存。這一切對(duì)于程序員來說是透明的,因?yàn)槲覀兊淖兞吭诙x之前總是無法得到存儲(chǔ)空間,即便編譯器這么干了!
            即使存儲(chǔ)空間在一開始就被分配了,但是C++對(duì)象的構(gòu)造函數(shù)仍然需要到對(duì)象定義的時(shí)候才會(huì)被調(diào)用,因?yàn)闃?biāo)識(shí)符只有到此時(shí)才是有效的。編譯器為了防止程序員用一些條件選擇手段跳過變量的初始化就開始使用,它會(huì)檢查代碼中是否把一個(gè)變量對(duì)象的定義放到了條件塊中,比如switch的case塊,goto等,看下面這段代碼:
             1 #include <iostream>
             2 #include <string>
             3 
             4 using namespace std;
             5 
             6 class A{
             7 public:
             8     //A(){} //對(duì)于VC2005和GCC來說,只有提供構(gòu)造函數(shù),編譯器才會(huì)檢測(cè)出錯(cuò)誤
             9 int b;
            10 };
            11 
            12 int main()
            13 {
            14     int i;
            15     cin>>i;
            16 
            17     if (i < 10)
            18         goto flag;
            19 
            20     A fsd;            //構(gòu)造函數(shù)的調(diào)用被goto跳過
            21     fsd.b = i;
            22 
            23 flag:
            24     switch (i)
            25     {
            26     case 1:
            27         A a;
            28         a.b = 3;
            29         break;
            30     case 10:
            31         {
            32         A aa;
            33         aa.b = 10;
            34         cout<<a.b<<endl; //error C2360: initialization of 'a' is skipped by 'case' label
            35         break;
            36         }
            37     default:
            38         break;
            39     }
            40 
            41     cout<<fsd.b<<endl;//如果輸入?yún)?shù)小于10,那么fsd的初始化將被跳過,程序運(yùn)行到這里崩潰
            42 
            43     return 0;
            44 }
            輸入1,跳過了fsd的初始化,程序運(yùn)行結(jié)果不可知。
            輸入10,跳過了a的初始化,程序運(yùn)行結(jié)果同樣不可知。

            国内精品欧美久久精品| 狠狠色丁香久久婷婷综合蜜芽五月| 老司机午夜网站国内精品久久久久久久久 | 久久综合给合综合久久| 亚洲国产天堂久久综合| 亚洲精品乱码久久久久久按摩| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 伊人热热久久原色播放www | 99久久这里只精品国产免费| AV无码久久久久不卡蜜桃| 成人国内精品久久久久一区| 久久亚洲高清观看| 久久久久久青草大香综合精品| 18禁黄久久久AAA片| 久久久久亚洲AV成人片| 久久99精品免费一区二区| 久久精品aⅴ无码中文字字幕不卡| 欧美一区二区三区久久综合| 久久青青草原国产精品免费| 久久久久亚洲AV无码观看| 狠狠色丁香久久婷婷综| 国产精品久久久久a影院| 99久久久久| 久久精品国产亚洲av日韩| 精品久久久久久无码人妻热| 亚洲国产精品成人久久| 久久精品国产亚洲av瑜伽| 久久精品国产亚洲AV大全| 久久精品久久久久观看99水蜜桃| 国产精品成人99久久久久| 日本欧美久久久久免费播放网| 亚洲精品第一综合99久久| 久久国产精品免费| 国产ww久久久久久久久久| 久久香综合精品久久伊人| 久久久无码精品亚洲日韩京东传媒| 久久99精品久久久久久9蜜桃| 久久精品国产精品青草| 久久国产热精品波多野结衣AV| 一本色道久久HEZYO无码| 99精品国产免费久久久久久下载|