[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ù)器
-
安裝
https://www.jetbrains.com/help/clion/installation-guide.html#toolbox
-
CLion默認(rèn)調(diào)試工具是GDB
gdb是linux下非常好用的一個(gè)調(diào)試工具
gcc -g test.cpp -o test
-
在從App Store上下載Xcode后练链,默認(rèn)是不會(huì)安裝Command Line Tools的翔脱,Command Line Tools是在Xcode中的一款工具,可以在命令行中運(yùn)行C程序媒鼓。為了學(xué)習(xí)Objective-C届吁,現(xiàn)在也來(lái)學(xué)習(xí)一下如何安裝Command Line Tools眷细,具體步驟如下:
xcode-select --install
或https://developer.apple.com/download/more/
搜索command line tools下載(
具體過(guò)程https://blog.csdn.net/kangguang/article/details/78935761)
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