c++/02/22

[toc]

c++

ide

  • Xcode

    • XCode 的一個(gè)硬傷是不支持外部make項(xiàng)目代碼的補(bǔ)全(有一個(gè)trick就是用cmake來(lái)生成XCode項(xiàng)目倒是可以)

    • 最近編譯一個(gè)比較大的開(kāi)源項(xiàng)目痰憎,發(fā)現(xiàn)最新版本的clion都靠不住了脚乡。又慢又崩想暗,單步也不好用。只能切回xcode

    • xcode運(yùn)行c++程序

      1.打開(kāi)Xcode文件,選擇 Create a new Xcode project

      2.選擇macOS 下面 Application 后,在右側(cè)選擇 Command Line T...(lanuage選c++)

      3.填寫(xiě)相關(guān)內(nèi)容:product name , organization n...

      4.不勾選 create git repository ,因?yàn)槭且粋€(gè)演示的例子,...

      5.雙擊項(xiàng)目名稱(chēng),點(diǎn)擊開(kāi)main.cpp,在編輯欄里面寫(xiě)代碼涝动。

  • CLion

    • IDE切換路徑 xcode --> clion ---> xocde

    • 原來(lái)一直用xcode寫(xiě)C++,后來(lái)?yè)Q到clion下钓丰,真香仆嗦。各種快捷操作還支持cmake,寫(xiě)好代碼直接丟服務(wù)器

    • 安裝

c++簡(jiǎn)介

C++ 是一種靜態(tài)類(lèi)型的赛糟、編譯式的、通用的罕袋、大小寫(xiě)敏感的潮模、不規(guī)則的編程語(yǔ)言亮蛔,支持過(guò)程化編程、面向?qū)ο缶幊毯头盒途幊獭?/p>

C++ 被認(rèn)為是一種中級(jí)語(yǔ)言再登,它綜合了高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的特點(diǎn)尔邓。

C++ 是由 Bjarne Stroustrup 于 1979 年在新澤西州美利山貝爾實(shí)驗(yàn)室開(kāi)始設(shè)計(jì)開(kāi)發(fā)的。C++ 進(jìn)一步擴(kuò)充和完善了 C 語(yǔ)言锉矢,最初命名為帶類(lèi)的C梯嗽,后來(lái)在 1983 年更名為 C++。

C++ 是 C 的一個(gè)超集沽损,事實(shí)上灯节,任何合法的 C 程序都是合法的 C++ 程序。

注意:使用靜態(tài)類(lèi)型的編程語(yǔ)言是在編譯時(shí)執(zhí)行類(lèi)型檢查,而不是在運(yùn)行時(shí)執(zhí)行類(lèi)型檢查炎疆。

C++ 的使用

基本上每個(gè)應(yīng)用程序領(lǐng)域的程序員都有使用 C++卡骂。

C++ 通常用于編寫(xiě)設(shè)備驅(qū)動(dòng)程序和其他要求實(shí)時(shí)性的直接操作硬件的軟件。

C++ 廣泛用于教學(xué)和研究形入。

任何一個(gè)使用蘋(píng)果電腦或 Windows PC 機(jī)的用戶(hù)都在間接地使用 C++全跨,因?yàn)檫@些系統(tǒng)的主要用戶(hù)接口是使用 C++ 編寫(xiě)的。

基本語(yǔ)法

C++程序結(jié)構(gòu)

// 01導(dǎo)庫(kù)
// 格式include+空格+<+庫(kù)名+> (注意空格)
#include <iostream>
// 02命名空間()
// 格式 using namespace std;(注意std)
// 命名空間是個(gè)啥
// https://blog.csdn.net/weixin_39374967/article/details/104118014
using namespace std;
// 03main函數(shù)開(kāi)始執(zhí)行的地方
int main() {
    cout << "Hello World";
    return 0;
}
//  main() {...
// main must return int
// 為什么大多數(shù)程序主函數(shù)成功時(shí)都return 0; 不return 1; 亿遂?
// https://www.zhihu.com/question/53701904?sort=created

編譯 & 執(zhí)行 C++ 程序

  • 打開(kāi)一個(gè)文本編輯器浓若,添加上述代碼。

  • 保存文件為 hello.cpp蛇数。

  • 打開(kāi)命令提示符挪钓,進(jìn)入到保存文件所在的目錄。

  • 鍵入 'g++ hello.cpp '耳舅,輸入回車(chē)碌上,編譯代碼。如果代碼中沒(méi)有錯(cuò)誤浦徊,命令提示符會(huì)跳到下一行馏予,并生成 a.out 可執(zhí)行文件。

  • 現(xiàn)在辑畦,鍵入 ' a.out' 來(lái)運(yùn)行程序吗蚌。

  • 您可以看到屏幕上顯示 ' Hello World '腿倚。

  • 請(qǐng)確保您的路徑中已包含 g++ 編譯器纯出,并確保在包含源文件 hello.cpp 的目錄中運(yùn)行它。

    您也可以使用 makefile 來(lái)編譯 C/C++ 程序敷燎。

C++ 標(biāo)識(shí)符

  • C++ 標(biāo)識(shí)符內(nèi)不允許出現(xiàn)標(biāo)點(diǎn)字符暂筝,比如 @、& 和 %

  • C++ 是區(qū)分大小寫(xiě)的編程語(yǔ)言硬贯。

  • C++ 標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量焕襟、函數(shù)、類(lèi)饭豹、模塊鸵赖,或任何其他用戶(hù)自定義項(xiàng)目的名稱(chēng)

  • 一個(gè)標(biāo)識(shí)符以字母 A-Z 或 a-z 或下劃線 _ 開(kāi)始,后跟零個(gè)或多個(gè)字母拄衰、下劃線和數(shù)字(0-9)它褪。

C++ 關(guān)鍵字

asm (指令字符串):允許在 C++ 程序中嵌入?yún)R編代碼。 else new this
auto(自動(dòng)翘悉,automatic)是存儲(chǔ)類(lèi)型標(biāo)識(shí)符茫打,表明變量"自動(dòng)"具有本地范圍,塊范圍的變量聲明(如for循環(huán)體內(nèi)的變量聲明)默認(rèn)為auto存儲(chǔ)類(lèi)型。 enum operator throw
bool explicit private true
break(中斷老赤、跳出)轮洋,用在switch語(yǔ)句或者循環(huán)語(yǔ)句中。程序遇到 break 后抬旺,即跳過(guò)該程序段弊予,繼續(xù)后面的語(yǔ)句執(zhí)行。 export protected try
case extern public typedef
catch 和 try 語(yǔ)句一起用于異常處理开财。 false register typeid
char(字符块促,character)類(lèi)型,C++ 中的基本數(shù)據(jù)結(jié)構(gòu)床未,其值一般為 0~255 的 int竭翠。這 256 個(gè)字符對(duì)應(yīng)著 256 個(gè) ASCII 碼。char 類(lèi)型的數(shù)據(jù)需要用單引號(hào) ' 括起來(lái)薇搁。 float reinterpret_cast typename
class for return union
const(常量的斋扰,constant)所修飾的對(duì)象或變量不能被改變,修飾函數(shù)時(shí)啃洋,該函數(shù)不能改變?cè)谠摵瘮?shù)外面聲明的變量也不能調(diào)用任何非const函數(shù)传货。在函數(shù)的聲明與定義時(shí)都要加上const,放在函數(shù)參數(shù)列表的最后一個(gè)括號(hào)后宏娄。在 C++ 中问裕,用 const 聲明一個(gè)變量,意味著該變量就是一個(gè)帶類(lèi)型的常量孵坚,可以代替 #define粮宛,且比 #define 多一個(gè)類(lèi)型信息,且它執(zhí)行內(nèi)鏈接卖宠,可放在頭文件中聲明巍杈;但在 C 中,其聲明則必須放在源文件(即 .C 文件)中扛伍,在 C 中 const 聲明一個(gè)變量筷畦,除了不能改變其值外,它仍是一具變量刺洒。如: friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template
const double pi(3.14159);
或 
const double pi = 3.14159;
  • const(常量的鳖宾,constant)所修飾的對(duì)象或變量不能被改變,修飾函數(shù)時(shí)逆航,該函數(shù)不能改變?cè)谠摵瘮?shù)外面聲明的變量也不能調(diào)用任何非const函數(shù)鼎文。在函數(shù)的聲明與定義時(shí)都要加上const,放在函數(shù)參數(shù)列表的最后一個(gè)括號(hào)后纸泡。在 C++ 中漂问,用 const 聲明一個(gè)變量赖瞒,意味著該變量就是一個(gè)帶類(lèi)型的常量,可以代替 #define蚤假,且比 #define 多一個(gè)類(lèi)型信息栏饮,且它執(zhí)行內(nèi)鏈接,可放在頭文件中聲明磷仰;但在 C 中袍嬉,其聲明則必須放在源文件(即 .C 文件)中,在 C 中 const 聲明一個(gè)變量灶平,除了不能改變其值外伺通,它仍是一具變量。如:

    const double pi(3.14159);
    或 
    const double pi = 3.14159;
    

1asm

asm (指令字符串):允許在 C++ 程序中嵌入?yún)R編代碼逢享。

2. auto

auto(自動(dòng)罐监,automatic)是存儲(chǔ)類(lèi)型標(biāo)識(shí)符,表明變量"自動(dòng)"具有本地范圍瞒爬,塊范圍的變量聲明(如for循環(huán)體內(nèi)的變量聲明)默認(rèn)為auto存儲(chǔ)類(lèi)型弓柱。

3. bool

bool(布爾)類(lèi)型,C++ 中的基本數(shù)據(jù)結(jié)構(gòu)侧但,其值可選為 true(真)或者 false(假)矢空。C++ 中的 bool 類(lèi)型可以和 int 混用,具體來(lái)說(shuō)就是 0 代表 false禀横,非 0 代表 true屁药。bool 類(lèi)型常用于條件判斷和函數(shù)返回值。

4. break

break(中斷柏锄、跳出)酿箭,用在switch語(yǔ)句或者循環(huán)語(yǔ)句中。程序遇到 break 后绢彤,即跳過(guò)該程序段七问,繼續(xù)后面的語(yǔ)句執(zhí)行。

5. case

用于 switch 語(yǔ)句中茫舶,用于判斷不同的條件類(lèi)型。

6. catch

catch 和 try 語(yǔ)句一起用于異常處理刹淌。

7. char

char(字符饶氏,character)類(lèi)型,C++ 中的基本數(shù)據(jù)結(jié)構(gòu)有勾,其值一般為 0~255 的 int疹启。這 256 個(gè)字符對(duì)應(yīng)著 256 個(gè) ASCII 碼。char 類(lèi)型的數(shù)據(jù)需要用單引號(hào) ' 括起來(lái)蔼卡。

8.class

class(類(lèi))是 C++ 面向?qū)ο笤O(shè)計(jì)的基礎(chǔ)喊崖。使用 class 關(guān)鍵字聲明一個(gè)類(lèi)。

9. const

const(常量的,constant)所修飾的對(duì)象或變量不能被改變荤懂,修飾函數(shù)時(shí)茁裙,該函數(shù)不能改變?cè)谠摵瘮?shù)外面聲明的變量也不能調(diào)用任何非const函數(shù)。在函數(shù)的聲明與定義時(shí)都要加上const节仿,放在函數(shù)參數(shù)列表的最后一個(gè)括號(hào)后晤锥。在 C++ 中,用 const 聲明一個(gè)變量廊宪,意味著該變量就是一個(gè)帶類(lèi)型的常量矾瘾,可以代替 #define,且比 #define 多一個(gè)類(lèi)型信息箭启,且它執(zhí)行內(nèi)鏈接壕翩,可放在頭文件中聲明;但在 C 中傅寡,其聲明則必須放在源文件(即 .C 文件)中戈泼,在 C 中 const 聲明一個(gè)變量,除了不能改變其值外赏僧,它仍是一具變量大猛。如:

const double pi(3.14159);
或 
const double pi = 3.14159;

10. const_cast用法:

const_cast<type_id> (expression)

該運(yùn)算符用來(lái)修改類(lèi)型的 const 或 volatile 屬性。除了 const 或 volatile 修飾之外淀零, type_id 和 expression 的類(lèi)型是一樣的挽绩。常量指針被轉(zhuǎn)化成非常量指針,并且仍然指向原來(lái)的對(duì)象驾中;常量引用被轉(zhuǎn)換成非常量引用唉堪,并且仍然指向原來(lái)的對(duì)象;常量對(duì)象被轉(zhuǎn)換成非常量對(duì)象肩民。

11. continue

continue(繼續(xù))關(guān)鍵字用于循環(huán)結(jié)構(gòu)唠亚。它使程序跳過(guò)代碼段后部的部分,與 break 不同的是持痰,continue 不是進(jìn)入代碼段后的部分執(zhí)行灶搜,而是重新開(kāi)始新的循環(huán)。因而它是"繼續(xù)循環(huán)"之意工窍,不是 break(跳出)割卖。

12. default

default(默認(rèn)、缺驶汲)用于 switch 語(yǔ)句鹏溯。當(dāng) switch 所有的 case 都不滿足時(shí),將進(jìn)入 default 執(zhí)行淹仑。default 只能放在 switch 語(yǔ)句所有的 case 之后丙挽,并且是可選的肺孵。

13. delete

delete(刪除)釋放程序動(dòng)態(tài)申請(qǐng)的內(nèi)存空間。delete 后面通常是一個(gè)指針或者數(shù)組 []颜阐,并且只能 delete 通過(guò) new 關(guān)鍵字申請(qǐng)的指針平窘,否則會(huì)發(fā)生段錯(cuò)誤。

14. do

do-while是一類(lèi)循環(huán)結(jié)構(gòu)瞬浓。與while循環(huán)不同初婆,do-while循環(huán)保證至少要進(jìn)入循環(huán)體一次。

15. double

double(雙精度)類(lèi)型猿棉,C++ 中的基本數(shù)據(jù)結(jié)構(gòu)磅叛,以雙精度形式存儲(chǔ)一個(gè)浮點(diǎn)數(shù)。

16. dynamic_cast

dynamic_cast(動(dòng)態(tài)轉(zhuǎn)換)萨赁,允許在運(yùn)行時(shí)刻進(jìn)行類(lèi)型轉(zhuǎn)換弊琴,從而使程序能夠在一個(gè)類(lèi)層次結(jié)構(gòu)安全地轉(zhuǎn)換類(lèi)型。dynamic_cast 提供了兩種轉(zhuǎn)換方式杖爽,把基類(lèi)指針轉(zhuǎn)換成派生類(lèi)指針敲董,或者把指向基類(lèi)的左值轉(zhuǎn)換成派生類(lèi)的引用。

17. else

else 緊跟在 if 后面慰安,用于對(duì) if 不成立的情況的選擇腋寨。

18. enum

enum(枚舉)類(lèi)型,給出一系列固定的值化焕,只能在這里面進(jìn)行選擇一個(gè)萄窜。

19. explicit

explicit(顯式的)的作用是"禁止單參數(shù)構(gòu)造函數(shù)"被用于自動(dòng)型別轉(zhuǎn)換,其中比較典型的例子就是容器類(lèi)型撒桨。在這種類(lèi)型的構(gòu)造函數(shù)中你可以將初始長(zhǎng)度作為參數(shù)傳遞給構(gòu)造函數(shù)查刻。

20. export

為了訪問(wèn)其他編譯單元(如另一代碼文件)中的變量或?qū)ο螅瑢?duì)普通類(lèi)型(包括基本數(shù)據(jù)類(lèi)凤类、結(jié)構(gòu)和類(lèi))穗泵,可以利用關(guān)鍵字 extern,來(lái)使用這些變量或?qū)ο髸r(shí)谜疤;但是對(duì)模板類(lèi)型佃延,則必須在定義這些模板類(lèi)對(duì)象和模板函數(shù)時(shí),使用標(biāo)準(zhǔn) C++ 新增加的關(guān)鍵字 export(導(dǎo)出)茎截。

21. extern

extern(外部的)聲明變量或函數(shù)為外部鏈接苇侵,即該變量或函數(shù)名在其它文件中可見(jiàn)。被其修飾的變量(外部變量)是靜態(tài)分配空間的企锌,即程序開(kāi)始時(shí)分配,結(jié)束時(shí)釋放于未。用其聲明的變量或函數(shù)應(yīng)該在別的文件或同一文件的其它地方定義(實(shí)現(xiàn))撕攒。在文件內(nèi)聲明一個(gè)變量或函數(shù)默認(rèn)為可被外部使用陡鹃。在 C++ 中,還可用來(lái)指定使用另一語(yǔ)言進(jìn)行鏈接抖坪,這時(shí)需要與特定的轉(zhuǎn)換符一起使用萍鲸。目前僅支持 C 轉(zhuǎn)換標(biāo)記,來(lái)支持 C 編譯器鏈接擦俐。使用這種情況有兩種形式:

extern "C" 聲明語(yǔ)句

extern "C" { 聲明語(yǔ)句塊 }

22. false

false(假的)脊阴,C++ 的基本數(shù)據(jù)結(jié)構(gòu) bool 類(lèi)型的值之一。等同于 int 的 0 值蚯瞧。

23. float

float(浮點(diǎn)數(shù))嘿期,C++ 中的基本數(shù)據(jù)結(jié)構(gòu),精度小于 double埋合。

24. for

for 是 C++ 中的循環(huán)結(jié)構(gòu)之一备徐。

25. friend

friend(友元)聲明友元關(guān)系。友元可以訪問(wèn)與其有 friend 關(guān)系的類(lèi)中的 private/protected 成員甚颂,通過(guò)友元直接訪問(wèn)類(lèi)中的 private/protected 成員的主要目的是提高效率蜜猾。友元包括友元函數(shù)和友元類(lèi)。

26. goto

goto(轉(zhuǎn)到)振诬,用于無(wú)條件跳轉(zhuǎn)到某一標(biāo)號(hào)處開(kāi)始執(zhí)行蹭睡。

27. if

if(如果),C++ 中的條件語(yǔ)句之一赶么,可以根據(jù)后面的 bool 類(lèi)型的值選擇進(jìn)入一個(gè)分支執(zhí)行肩豁。

28. inline

inline(內(nèi)聯(lián))函數(shù)的定義將在編譯時(shí)在調(diào)用處展開(kāi)。inline 函數(shù)一般由短小的語(yǔ)句組成禽绪,可以提高程序效率蓖救。

29. int

int(整型,integer)印屁,C++ 中的基本數(shù)據(jù)結(jié)構(gòu)循捺,用于表示整數(shù),精度小于 long雄人。

30. long

long(長(zhǎng)整型从橘,long integer),C++ 中的基本數(shù)據(jù)結(jié)構(gòu)础钠,用于表示長(zhǎng)整數(shù)恰力。

31. mutable

mutable(易變的)是 C++ 中一個(gè)不常用的關(guān)鍵字。只能用于類(lèi)的非靜態(tài)和非常量數(shù)據(jù)成員旗吁。由于一個(gè)對(duì)象的狀態(tài)由該對(duì)象的非靜態(tài)數(shù)據(jù)成員決定踩萎,所以隨著數(shù)據(jù)成員的改變,對(duì)像的狀態(tài)也會(huì)隨之發(fā)生變化很钓。如果一個(gè)類(lèi)的成員函數(shù)被聲明為 const 類(lèi)型香府,表示該函數(shù)不會(huì)改變對(duì)象的狀態(tài)董栽,也就是該函數(shù)不會(huì)修改類(lèi)的非靜態(tài)數(shù)據(jù)成員。但是有些時(shí)候需要在該類(lèi)函數(shù)中對(duì)類(lèi)的數(shù)據(jù)成員進(jìn)行賦值企孩,這個(gè)時(shí)候就需要用到 mutable 關(guān)鍵字锭碳。

32. namespace

namespace(命名空間)用于在邏輯上組織類(lèi),是一種比類(lèi)大的結(jié)構(gòu)勿璃。

33. new

new(新建)用于新建一個(gè)對(duì)象擒抛。new 運(yùn)算符總是返回一個(gè)指針。由 new 創(chuàng)建

34. operator

operator(操作符)用于操作符重載补疑。這是 C++ 中的一種特殊的函數(shù)歧沪。

35. private

private(私有的),C++ 中的訪問(wèn)控制符癣丧。被標(biāo)明為 private 的字段只能在本類(lèi)以及友元中訪問(wèn)槽畔。

36. protected

protected(受保護(hù)的),C++ 中的訪問(wèn)控制符胁编。被標(biāo)明為 protected 的字段只能在本類(lèi)以及其繼承類(lèi)和友元中訪問(wèn)厢钧。

37. public

public(公有的),C++ 中的訪問(wèn)控制符嬉橙。被標(biāo)明為 public 的字段可以在任何類(lèi)

38.register

register(寄存器)聲明的變量稱(chēng)著寄存器變量早直,在可能的情況下會(huì)直接存放在機(jī)器的寄存器中;但對(duì) 32 位編譯器不起作用市框,當(dāng) global optimizations(全局優(yōu)化)開(kāi)的時(shí)候霞扬,它會(huì)做出選擇是否放在自己的寄存器中;不過(guò)其它與 register 關(guān)鍵字有關(guān)的其它符號(hào)都對(duì)32位編譯器有效枫振。

39. reinterpret_cast

用法:

reinpreter_cast<type-id> (expression)

type-id 必須是一個(gè)指針喻圃、引用、算術(shù)類(lèi)型粪滤、函數(shù)指針或者成員指針斧拍。它可以把一個(gè)指針轉(zhuǎn)換成一個(gè)整數(shù),也可以把一個(gè)整數(shù)轉(zhuǎn)換成一個(gè)指針(先把一個(gè)指針轉(zhuǎn)換成一個(gè)整數(shù)杖小,在把該整數(shù)轉(zhuǎn)換成原類(lèi)型的指針肆汹,還可以得到原先的指針值)。

40. return

return(返回)用于在函數(shù)中返回值予权。程序在執(zhí)行到 return 語(yǔ)句后立即返回昂勉,return 后面的語(yǔ)句無(wú)法執(zhí)行到。

41. short

short(短整型扫腺,short integer)岗照,C++ 中的基本數(shù)據(jù)結(jié)構(gòu),用于表示整數(shù),精度小于 int谴返。

42. signed

signed(有符號(hào))煞肾,表明該類(lèi)型是有符號(hào)數(shù)咧织,和 unsigned 相反嗓袱。數(shù)字類(lèi)型(整型和浮點(diǎn)型)都可以用 signed 修飾。但默認(rèn)就是 signed习绢,所以一般不會(huì)顯式使用渠抹。

43. sizeof

由于 C++ 每種類(lèi)型的大小都是由編譯器自行決定的,為了增加可移植性闪萄,可以用 sizeof 運(yùn)算符獲得該數(shù)據(jù)類(lèi)型占用的字節(jié)數(shù)梧却。

44. static

static(靜態(tài)的)靜態(tài)變量作用范圍在一個(gè)文件內(nèi),程序開(kāi)始時(shí)分配空間败去,結(jié)束時(shí)釋放空間放航,默認(rèn)初始化為 0,使用時(shí)可改變其值圆裕。靜態(tài)變量或靜態(tài)函數(shù)广鳍,只有本文件內(nèi)的代碼才可訪問(wèn)它,它的名字(變量名或函數(shù)名)在其它文件中不可見(jiàn)吓妆。因此也稱(chēng)為"文件作用域"赊时。在 C++ 類(lèi)的成員變量被聲明為 static(稱(chēng)為靜態(tài)成員變量),意味著它被該類(lèi)的所有實(shí)例所共享行拢,也就是說(shuō)當(dāng)某個(gè)類(lèi)的實(shí)例修改了該靜態(tài)成員變量祖秒,其修改值為該類(lèi)的其它所有實(shí)例所見(jiàn);而類(lèi)的靜態(tài)成員函數(shù)也只能訪問(wèn)靜態(tài)成員(變量或函數(shù))舟奠。類(lèi)的靜態(tài)成員變量必須在聲明它的文件范圍內(nèi)進(jìn)行初始化才能使用竭缝,private 類(lèi)型的也不例外。

45. static_cast

用法:

static_cast < type-id > ( expression ) 

該運(yùn)算符把 expression 轉(zhuǎn)換為 type-id 類(lèi)型沼瘫,但沒(méi)有運(yùn)行時(shí)類(lèi)型檢查來(lái)保證轉(zhuǎn)換的安全性抬纸。它主要有如下幾種用法:

  • ① 用于類(lèi)層次結(jié)構(gòu)中基類(lèi)和子類(lèi)之間指針或引用的轉(zhuǎn)換。進(jìn)行上行轉(zhuǎn)換(把子類(lèi)的指針或引用轉(zhuǎn)換成基類(lèi)表示)是安全的晕鹊;進(jìn)行下行轉(zhuǎn)換(把基類(lèi)指針或引用轉(zhuǎn)換成子類(lèi)表示)時(shí)松却,由于沒(méi)有動(dòng)態(tài)類(lèi)型檢查,所以是不安全的溅话。
  • ② 用于基本數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換晓锻,如把 int 轉(zhuǎn)換成 char,把 int 轉(zhuǎn)換成 enum飞几。這種轉(zhuǎn)換的安全性也要開(kāi)發(fā)人員來(lái)保證砚哆。
  • ③ 把空指針轉(zhuǎn)換成目標(biāo)類(lèi)型的空指針。
  • ④ 把任何類(lèi)型的表達(dá)式轉(zhuǎn)換成void類(lèi)?

注意 static_cast 不能轉(zhuǎn)換掉 expression 的 const屑墨、volitale躁锁、或者 __unaligned 屬性纷铣。

46. struct

struct(結(jié)構(gòu))類(lèi)型,類(lèi)似于 class 關(guān)鍵字战转,與 C 語(yǔ)言兼容(class 關(guān)鍵字是不與 C 語(yǔ)言兼容的)搜立,可以實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)。

47. switch

switch(轉(zhuǎn)換)類(lèi)似于 if-else-if 語(yǔ)句槐秧,是一種多分枝語(yǔ)句啄踊。它提供了一種簡(jiǎn)潔的書(shū)寫(xiě),并且能夠生成效率更好的代碼刁标。但是颠通,switch 后面的判斷只能是int(char也可以,但char本質(zhì)上也是一種int類(lèi)型)膀懈。switch 語(yǔ)句最后的 default 分支是可選的顿锰。

48. template

template(模板),C++ 中泛型機(jī)制的實(shí)現(xiàn)启搂。

49. this

this 返回調(diào)用者本身的指針硼控。

50. throw

throw(拋出)用于實(shí)現(xiàn) C++ 的異常處理機(jī)制,可以通過(guò) throw 關(guān)鍵字"拋出"一個(gè)異常狐血。

51. true

true(真的)淀歇,C++ 的基本數(shù)據(jù)結(jié)構(gòu) bool 類(lèi)型的值之一。等同于 int 的非 0 值匈织。

52. try

try(嘗試)用于實(shí)現(xiàn) C++ 的異常處理機(jī)制浪默。可以在 try 中調(diào)用可能拋出異常的函數(shù)缀匕,然后在 try 后面的 catch 中捕獲并進(jìn)行處理纳决。

53. typedef

typedef(類(lèi)型定義,type define)乡小,其格式為:

typedef  類(lèi)型 定義名;

類(lèi)型說(shuō)明定義了一個(gè)數(shù)據(jù)類(lèi)型的新名字而不是定義一種新的數(shù)據(jù)類(lèi)型阔加。定義名表示這個(gè)類(lèi)型的新名字。

54. typeid

指出指針或引用指向的對(duì)象的實(shí)際派生類(lèi)型满钟。

55. typename

typename(類(lèi)型名字)關(guān)鍵字告訴編譯器把一個(gè)特殊的名字解釋成一個(gè)類(lèi)型胜榔。在下列情況下必須對(duì)一個(gè) name 使用 typename 關(guān)鍵字:

  • 1. 一個(gè)唯一的name(可以作為類(lèi)型理解),它嵌套在另一個(gè)類(lèi)型中的湃番。
  • 2. 依賴(lài)于一個(gè)模板參數(shù)夭织,就是說(shuō):模板參數(shù)在某種程度上包含這個(gè)name。當(dāng)模板參數(shù)使編譯器在指認(rèn)一個(gè)類(lèi)型時(shí)產(chǎn)生了誤解吠撮。

56. union

union(聯(lián)合)尊惰,類(lèi)似于 enum。不同的是 enum 實(shí)質(zhì)上是 int 類(lèi)型的,而 union 可以用于所有類(lèi)型弄屡,并且其占用空間是隨著實(shí)際類(lèi)型大小變化的题禀。

57. unsigned

unsigned(無(wú)符號(hào)),表明該類(lèi)型是無(wú)符號(hào)數(shù)膀捷,和 signed 相反迈嘹。

58. using

表明使用 namespace。

59. virtual

virtual(虛的)担孔,C++ 中用來(lái)實(shí)現(xiàn)多態(tài)機(jī)制江锨。

60. void

void(空的),可以作為函數(shù)返回值糕篇,表明不返回任何數(shù)據(jù);可以作為參數(shù)酌心,表明沒(méi)有參數(shù)傳入(C++中不是必須的)拌消;可以作為指針使用。

61. volatile

volatile(不穩(wěn)定的)限定一個(gè)對(duì)象可被外部進(jìn)程(操作系統(tǒng)安券、硬件或并發(fā)線程等)改變墩崩,聲明時(shí)的語(yǔ)法如下:

int volatile nVint;

這樣的聲明是不能達(dá)到最高效的,因?yàn)樗鼈兊闹惦S時(shí)會(huì)改變侯勉,系統(tǒng)在需要時(shí)會(huì)經(jīng)常讀寫(xiě)這個(gè)對(duì)象的值鹦筹。因此常用于像中斷處理程序之類(lèi)的異步進(jìn)程進(jìn)行內(nèi)存單元訪問(wèn)。

62. wchar_t

wchar_t 是寬字符類(lèi)型址貌,每個(gè) wchar_t 類(lèi)型占 2 個(gè)字節(jié)铐拐,16 位寬。漢字的表示就要用到 wchar_t练对。

c++的數(shù)據(jù)類(lèi)型

基本的內(nèi)置數(shù)據(jù)類(lèi)型

C++ 為程序員提供了種類(lèi)豐富的內(nèi)置數(shù)據(jù)類(lèi)型和用戶(hù)自定義的數(shù)據(jù)類(lèi)型遍蟋。下表列出了七種基本的 C++ 數(shù)據(jù)類(lèi)型:

類(lèi)型 關(guān)鍵字
布爾型 bool
字符型 char
整型 int
浮點(diǎn)型 float
雙浮點(diǎn)型 double
無(wú)類(lèi)型 void
寬字符型 wchar_t

c++ 寬字符

https://www.cnblogs.com/Dageking/archive/2014/01/15/3520406.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市螟凭,隨后出現(xiàn)的幾起案子虚青,更是在濱河造成了極大的恐慌,老刑警劉巖螺男,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棒厘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡下隧,警方通過(guò)查閱死者的電腦和手機(jī)奢人,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)汪拥,“玉大人达传,你說(shuō)我怎么就攤上這事。” “怎么了宪赶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵宗弯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我搂妻,道長(zhǎng)蒙保,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任欲主,我火速辦了婚禮邓厕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扁瓢。我一直安慰自己详恼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布引几。 她就那樣靜靜地躺著昧互,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伟桅。 梳的紋絲不亂的頭發(fā)上敞掘,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音楣铁,去河邊找鬼玖雁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盖腕,可吹牛的內(nèi)容都是我干的赫冬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赊堪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼面殖!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起哭廉,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脊僚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后遵绰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辽幌,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年椿访,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乌企。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡成玫,死狀恐怖加酵,靈堂內(nèi)的尸體忽然破棺而出拳喻,到底是詐尸還是另有隱情,我是刑警寧澤猪腕,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布冗澈,位于F島的核電站,受9級(jí)特大地震影響陋葡,放射性物質(zhì)發(fā)生泄漏亚亲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一腐缤、第九天 我趴在偏房一處隱蔽的房頂上張望捌归。 院中可真熱鬧,春花似錦岭粤、人聲如沸惜索。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)门扇。三九已至,卻和暖如春偿渡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霸奕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工溜宽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人质帅。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓适揉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親煤惩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫉嘀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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