_C++的類型檢查更嚴格


C++作爲一門面向對象的增強型語言,有着比C語言更爲嚴謹的類型檢查功能 。

       在C語言中,我們經常可以像這樣定義一個變量:
     const int a = 100;
       這樣的a被定義成了一個常量,在後面的代碼中我們便不能通過a = 200 這樣的方式修改a的值,可是我們可以這樣:
     int *p = &a;
       然後再這樣:
     *p = 200;
       最後讀者可以嘗試打印一下a的值:
     printf(“a = %d\n”, a);
       不用說,打印的結果一定是:a = 200;
       其實,對於const int a,我們給它取地址,可以發現a的地址其實是這樣的類型: 
       & const int
 
      而int *p = &a這句中等於把一個 & const int 賦給了 &int,在C語言中,這樣的事情是可以發生的。
 
       在C++中,這樣的語句是不能被編譯通過的,因爲C++的內心是牴觸強轉的:
       

      還有如下這種情況:
      
      因爲malloc出來的內存是 void * 類型,而 p 是int型。

                                                                     

                                                                                                                   Kyrie Irving___全.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章