国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

4、C++中新的關鍵字

2019-11-08 01:47:19
字體:
來源:轉載
供稿:網友
1、C++中的動態內存分配     C++中通過new關鍵字進行動態內存申請     C++中的動態內存申請是基于類型進行的     delete關鍵字用于內存釋放          變量申請:     Type* pointer = new Type;     //......     delete pointer;          數組申請:     Type* pointer = new Type[N];     //......     delete [] pointer ;     2、new關鍵字與malloc函數的區別    ·new關鍵字是C++的一部分,malloc是由C庫提供的函數    ·new以具體類型為單位進行內存分配,malloc只能以字節為單位進行內存分配    ·new在申請單個類型變量時可進行初始化,malloc不具備內存初始化的特性    3、C++中的命名空間     在C語言中只有一個全局作用域         C語言中所有的全局標識符共享通一個作用域             標識符之間可能發生沖突                  C++中提出了命名空間的概念       ·命名空間將全局作用域分成不同的部分       ·不同命名空間中的標識符可以同名而不會發生沖突       ·命名空間可以相互嵌套       ·全局作用域也叫默認命名空間4、C++命名空間的使用:    ·使用整個命名空間:using namespace name;    ·使用命名空間中的變量:using name::variable;    ·使用默認命名空間中的變量:::varible;        默認情況下可以直接使用默認命名空間中的所有標識符    5、強制類型轉換   ·C方式強制類型轉換存在的問題      過于粗暴          任意類型之間都可以進行轉換,編譯器很難判斷其正確性      難于定位          在源碼中無法快速定位所有使用強制類型轉換的語句             在程序設計理論中強制類型轉化是不被推薦的,與goto語句一樣,應該盡量避免   6、C++將強制類型轉換分為4種不同的類型     static_cast    const_cast     dynamic_cast   reinterPRet_cast          用法:XXX_cast<Type>(Expression)     7、static_cast強制類型轉換   ——用于基本類型間的轉換,但不能用于基本類型指針間的轉換   ——用于有繼承關系類對象之間的轉換和類指針之間的轉換         int main()      {          int i = 0;          char c = 'c';          int *pi = &i;          char *pc = &c;                    c = static_cast<char>(i);  //It's ok!          pc = static_cast<char *>(pi);//  GG!                    return 0;       }         static_cast是編譯期進行轉換的,無法在運行時檢測類型,   所以類類型之間的轉換可能存在風險。   8、const_cast強制類型轉換       ——用于去除變量的const屬性           int main()           {               const int& j = 1;               int& k = const_cast<int&>(j);               const int x = 2;               int& y = const_cast<int&>(x);                              k = 5;                              printf ("j = %d/n", j);               printf ("k = %d/n", k);                              y = 3;                              printf ("x = %d/n", x);               printf ("y = %d/n", y);               printf ("&x = %p/n", &x);               printf ("&y = %p/n", &y);                              return 0;           }           9、reinterpret_cast強制類型轉換  ——用于指針類型間的強制類型轉換  ——用于整數和指針類型間的強制轉換      typedef void(PF)(int);            int main()      {          int i = 0;          char c = 'c';          int *pi = reinterpret_cast<int*>(&c);          char *pc = reinterpret_cast<char *>(&i);          PF* pf = reinterpret_cast<PF*>(0x12345678);                    c = reinterpret_cast<char>(i);// Oops,static_cast should be used here.          return 0;      }        10、dynamic_cast強制類型轉換  ——主要用于類層次間的轉換,還可以用于類之間的交叉轉換  ——dynamic_cast具有類型檢查的功能,比static_cast更安全  11、小結   ·C++中內置了動態內存分配的專用關鍵字   ·C++中的動態內存分配是基于類型進行的   ·C++中的命名空間概念用于解決名稱沖突問題   ·C++細化了C語言中強制類型轉換的方式      ——C++不推薦在程序中使用強制類型轉換      ——C++建議在強制類型轉換時考慮一下究竟希望什么樣的轉換
上一篇:C++ 虛函數表解析

下一篇:c++程序計時

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 房山区| 宁阳县| 金川县| 政和县| 娄底市| 泰和县| 阿鲁科尔沁旗| 莲花县| 固原市| 武平县| 乌恰县| 龙游县| 苏州市| 永泰县| 孝义市| 海城市| 泾源县| 新和县| 东莞市| 陆河县| 蒲城县| 原阳县| 阿坝| 辽阳县| 霍山县| 菏泽市| 临高县| 井陉县| 邵阳县| 江津市| 兴义市| 雷波县| 观塘区| 醴陵市| 栖霞市| 米泉市| 昌图县| 旌德县| 类乌齐县| 永春县| 淳安县|