C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- å鿍¡æ¿(C++14 èµ·)
- æ´æ°åé¢é
- èååå§å
- æ¯è¾è¿ç®ç¬¦
- é»è®¤æ¯è¾(C++20 èµ·)
- 转ä¹åºå
- for 循ç¯
- while 循ç¯
- ç¨æ·å®ä¹è½¬æ¢
- SFINAE
- 䏻彿°
- ASCII ç 表
- æ è¯ç¬¦
- ç±»å
- å 忍¡å
- 对象
- åºæ¬æ¦å¿µ
- 表达å¼
- 声æ
- åå§å
- 彿°
- è¯å¥
- ç±»
- è¿ç®ç¬¦éè½½
- 模æ¿
- å¼å¸¸
- äºå¡æ§å å
- å ä½ç¬¦ç±»å说æç¬¦ (C++11 èµ·)
- decltype 说æç¬¦
- 彿°å£°æ
- final 说æç¬¦ (C++11 èµ·)
- override 说æç¬¦(C++11 èµ·)
- å¼ç¨å£°æ
- ç§»å¨æé 彿°
- ç§»å¨èµå¼è¿ç®ç¬¦
- æä¸¾å£°æ
- constexpr 说æç¬¦(C++11 èµ·)
- å表åå§å (C++11 èµ·)
- æé 彿°ä¸æååå§åå¨å表
- using 声æ
- nullptrï¼æéåé¢é
- åºç¡ç±»å
- ç±»åå«åï¼å«å模ç (C++11 èµ·)
- å½¢åå
- èåä½å£°æ
- å符串åé¢é
- ç¨æ·å®ä¹åé¢é (C++11 èµ·)
- 屿§è¯´æç¬¦åºå(C++11 èµ·)
- Lambda è¡¨è¾¾å¼ (C++11 èµ·)
- noexcept 说æç¬¦ (C++11 èµ·)
- noexcept è¿ç®ç¬¦ (C++11 èµ·)
- alignof è¿ç®ç¬¦(C++11 èµ·)
- alignas 说æç¬¦ (C++11 èµ·)
- åå¨ç±»è¯´æç¬¦
- åºäºèå´ç for å¾ªç¯ (C++11 èµ·)
- static_assert 声æ
- éå¼è½¬æ¢
- 代ç¨è¿ç®ç¬¦è¡¨ç¤º
- èªå¢/èªåè¿ç®ç¬¦
- æå 表达å¼(C++17 èµ·)
- 类模æ¿å®åæ¨å¯¼(C++17 èµ·)
- 模æ¿å½¢å䏿¨¡æ¿å®å
- if è¯å¥
- inline 说æç¬¦
- ç»æåç»å®å£°æ (C++17 èµ·)
- switch è¯å¥
- å符åé¢é
- å½å空é´
- æ±å¼é¡ºåº
- å¤å¶æ¶é¤
- consteval 说æç¬¦ (C++20 èµ·)
- constinit 说æç¬¦ (C++20 èµ·)
- åç¨ (C++20)
- 模å (C++20 èµ·)
- 约æä¸æ¦å¿µ (C++20 èµ·)
- new 表达å¼
- do-while 循ç¯
- continue è¯å¥
- break è¯å¥
- goto è¯å¥
- return è¯å¥
- 卿å¼å¸¸è¯´æ
- throw 表达å¼
- try å
- å½å空é´å«å
- 类声æ
- cvï¼const ä¸ volatileï¼ç±»åéå®ç¬¦
- é»è®¤åå§å
- å¼åå§å(C++03 èµ·)
- é¶åå§å
- å¤å¶åå§å
- ç´æ¥åå§å
- 常éåå§å
- å¼ç¨åå§å
- å¼ç±»å«
- C++ è¿ç®ç¬¦ä¼å 级
- å¸å°åé¢é
- æµ®ç¹åé¢é
- typedef 说æç¬¦
- æ¾å¼ç±»å转æ¢
- static_cast 转æ¢
- dynamic_cast 转æ¢
- const_cast 转æ¢
- reinterpret_cast 转æ¢
- delete 表达å¼
- æé 彿°ä¸æååå§åå¨å表
- this æé
- 访é®è¯´æç¬¦
- åå 声æ
- virtual 彿°è¯´æç¬¦
- explicit 说æç¬¦
- éææå
- é»è®¤æé 彿°
- å¤å¶æé 彿°
- å¤å¶èµå¼è¿ç®ç¬¦
- ææå½æ°
- 类模æ¿
- 彿°æ¨¡æ¿
- æ¾å¼ï¼å ¨ï¼æ¨¡æ¿ç¹å
- æ±ç¼å£°æ
- C++ çåå²
- ä½ç¨å
- çåæ
- å®ä¹ä¸åä¸å®ä¹è§åï¼ODRï¼
- å忥æ¾
- æéå®çå忥æ¾
- æ éå®çå忥æ¾
- å¦åè§å
- æªå®ä¹è¡ä¸º
- ç¿»è¯é¶æ®µ
- 常é表达å¼
- èµå¼è¿ç®ç¬¦
- ç®æ¯è¿ç®ç¬¦
- é»è¾è¿ç®ç¬¦
- æå访é®è¿ç®ç¬¦
- å ¶ä»è¿ç®ç¬¦
- sizeof è¿ç®ç¬¦
- typeid è¿ç®ç¬¦
- æé声æ
- æ°ç»å£°æ
- è¯è¨é¾æ¥
- 详述类å说æç¬¦
- é»è®¤å®å
- åé¿å®å
- å®åä¾èµæ¥æ¾
- éè½½å³è®®
- éè½½å½æ°çå°å
- æ³¨å ¥ç±»å
- ééææ°æ®æå
- ééææå彿°
- åµå¥ç±»
- æ´¾çç±»
- 空åºç±»ä¼å
- æ½è±¡ç±»
- ä½å
- è½¬æ¢æé 彿°
- æå模æ¿
- 模æ¿å®åæ¨å¯¼
- é¨å模æ¿ç¹å
- sizeof... è¿ç®ç¬¦
- å¾ å³å
- 彿° try å
- æ©å å½åç©ºé´ std
- åæ¯ç¼©å
- RAII
- ä¸/äº/é¶ä¹æ³å
- PImpl
- é¶å¼éåå
- ç±»å
- éå¼è½¬æ¢
- 注é
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >C++ è¯è¨ > C++ è¿ç®ç¬¦ä¼å 级
C++ è¿ç®ç¬¦ä¼å 级
ä¸è¡¨ååº C++ è¿ç®ç¬¦çä¼å 级åç»åæ§ãå个è¿ç®ç¬¦ä»¥ä¼å 级çéåºä»ä¸è³ä¸ååºã
| ä¼å 级 | è¿ç®ç¬¦ | æè¿° | ç»åæ§ |
|---|---|---|---|
| 1 | ::
|
ä½ç¨åè§£æ | ä»å·¦å°å³ |
| 2 | a++Â Â a--
|
åç¼èªå¢ä¸èªå | |
type()Â Â type{}
|
彿°é£æ ¼è½¬å | ||
a()
|
彿°è°ç¨ | ||
a[]
|
䏿 | ||
.  ->
|
æåè®¿é® | ||
| 3 | ++a  --a
|
åç¼èªå¢ä¸èªå | ä»å³å°å·¦ |
+a  -a
|
ä¸å å ä¸å | ||
!  ~
|
é»è¾éåéä½é | ||
(type)
|
C 飿 ¼è½¬å | ||
*a
|
é´æ¥ï¼è§£å¼ç¨ï¼ | ||
&a
|
åå | ||
sizeof
|
å大å°[注 1] | ||
co_await
|
await è¡¨è¾¾å¼ (C++20) | ||
new  new[]
|
卿å ååé | ||
delete  delete[]
|
卿å ååé | ||
| 4 | .*Â Â ->*
|
æåæé | ä»å·¦å°å³ |
| 5 | a*b  a/b  a%b
|
乿³ã餿³ä¸ä½æ° | |
| 6 | a+b  a-b
|
å æ³ä¸åæ³ | |
| 7 | <<Â Â >>
|
éä½å·¦ç§»ä¸å³ç§» | |
| 8 | <=>
|
ä¸è·¯æ¯è¾è¿ç®ç¬¦(C++20 èµ·) | |
| 9 | <Â Â <=
|
åå«ä¸º < ä¸ â¤ çå ³ç³»è¿ç®ç¬¦ | |
>Â Â >=
|
åå«ä¸º > ä¸ â¥ çå ³ç³»è¿ç®ç¬¦ | ||
| 10 | ==Â Â !=
|
åå«ä¸º = ä¸ â çå ³ç³»è¿ç®ç¬¦ | |
| 11 | a&b
|
éä½ä¸ | |
| 12 | ^
|
éä½å¼æï¼äºæ¥æï¼ | |
| 13 | |
|
é使ï¼å¯å ¼æï¼ | |
| 14 | &&
|
é»è¾ä¸ | |
| 15 | ||
|
é»è¾æ | |
| 16 | a?b:c
|
ä¸å æ¡ä»¶[注 2] | ä»å³å°å·¦ |
throw
|
throw è¿ç®ç¬¦ | ||
co_yield
|
yield è¡¨è¾¾å¼ (C++20) | ||
=
|
ç´æ¥èµå¼ï¼C++ ç±»é»è®¤æä¾ï¼ | ||
+=Â Â -=
|
以ååå·®å¤åèµå¼ | ||
*=Â Â /=Â Â %=
|
以积ãåå使°å¤åèµå¼ | ||
<<=Â Â >>=
|
以éä½å·¦ç§»åå³ç§»å¤åèµå¼ | ||
&=Â Â ^=Â Â |=
|
以éä½ä¸ã弿åæå¤åèµå¼ | ||
| 17 | ,
|
éå· | ä»å·¦å°å³ |
- â
sizeofçæä½æ°ä¸è½æ¯ C 飿 ¼è½¬åï¼è¡¨è¾¾å¼sizeof (int) * pæ æ§ä¹å°è§£éæ(sizeof(int)) * pï¼èésizeof((int)*p)ã - â æ¡ä»¶è¿ç®ç¬¦ä¸é¨ï¼
?ä¸:ä¹é´ï¼ç表达å¼åæä¸ºå¦åå ¶å¸¦ææ¬å·ï¼å¿½ç¥å ¶ç¸å¯¹äº?:çä¼å 级ã
åæè¡¨è¾¾å¼æ¶ï¼åäºä¸é¢è¡¨ä¸æè¡çè¿ç®ç¬¦ï¼å°æ¯åäºä½äºå®çè¡ä¸æ¥æè¾ä½ä¼å 级çä»»ä½è¿ç®ç¬¦ï¼æ´ç´§å¯å°ä¸å ¶å®åç¸ç»å®ï¼å¦åç¨äºæ¬å·ï¼ãä¾å¦ï¼è¡¨è¾¾å¼ std::cout << a & b å *p++ 被åæä¸º (std::cout << a) & b å *(p++)ï¼èé std::cout << (a & b) æ (*p)++ã
æ¥æç¸åä¼å 级çè¿ç®ç¬¦ä»¥å ¶ç»åæ§çæ¹åä¸ååæ°ç»å®ãä¾å¦è¡¨è¾¾å¼ a = b = c 被åæä¸º a = (b = c) èé (a = b) = cï¼å 为èµå¼å ·æä»å³å°å·¦ç»åæ§ï¼ä½ a + b - c 被åæä¸º (a + b) - c èé a + (b - c)ï¼å ä¸ºå æ³ååæ³å ·æä»å·¦å°å³ç»åæ§ã
ç»åæ§è§å®å¯¹äºä¸å è¿ç®ç¬¦æ¯åä½çï¼åªä¸ºå®å¤èç»åºï¼ä¸å åç¼è¿ç®ç¬¦å§ç»ä»å³å°å·¦ç»åï¼delete ++*p 为 delete(++(*p))ï¼èä¸å åç¼è¿ç®ç¬¦å§ç»ä»å·¦å°å³ç»åï¼a[1][2]++ 为 ((a[1])[2])++ï¼ãè¦æ³¨æï¼ç»åæ§å¯¹æå访é®è¿ç®ç¬¦æ¯ææä¹çï¼å³ä½¿å¨å®ä»¬ä¸ä¸å åç¼è¿ç®ç¬¦ç»åæ¶ä¹æ¯å¦æ¤ï¼a.b++ åæä¸º (a.b)++ èé a.(b++)ã
è¿ç®ç¬¦ä¼å 级ä¸åè¿ç®ç¬¦é载影åãä¾å¦ï¼std::cout << a ? b : c; åæä¸º (std::cout << a) ? b : c;ï¼å ä¸ºç®æ¯å·¦ç§»çä¼å 级é«äºæ¡ä»¶è¿ç®ç¬¦ã
注解
ä¼å 级åç»åæ§æ¯ç¼è¯æ¶æ¦å¿µï¼ä¸æ±å¼é¡ºåºæ å ³ï¼åè æ¯è¿è¡æ¶æ¦å¿µã
æ åèªèº«ä¸æå®ä¼å 级ãå®ä»¬æ¯ä»ææ³å¯¼åºçã
表ä¸å¹¶æªå
æ¬ const_castãstatic_castãdynamic_castãreinterpret_castãtypeidãsizeof...ãnoexcept å alignofï¼å 为å®ä»¬å³ä¸ä¼ææ§ä¹ã
ä¸äºè¿ç®ç¬¦æ¥æä»£ç¨åæ³ï¼ä¾å¦ï¼&& å¯ä¸º andã|| å¯ä¸º orã! å¯ä¸º not çï¼ã
C ä¸ï¼ä¸å æ¡ä»¶è¿ç®ç¬¦æ¥æé«äºèµå¼è¿ç®ç¬¦çä¼å 级ãå æ¤ï¼è¡¨è¾¾å¼ e = a < d ? a++ : a = d å¨ C++ ä¸åææ e = ((a < d) ? (a++) : (a = d))ï¼ä½å¨ C ä¸ä¼ç±äº C çè¯æ³æè¯ä¹å¶çº¦èç¼è¯å¤±è´¥ãç»èè§å¯¹åºç C 页é¢ã
åé
| 常è§è¿ç®ç¬¦ | ||||||
|---|---|---|---|---|---|---|
| èµå¼ | èªå¢ èªå |
ç®æ¯ | é»è¾ | æ¯è¾ | æåè®¿é® | å ¶ä» |
|
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
| ç¹æ®è¿ç®ç¬¦ | ||||||
|
static_cast 转æ¢ä¸ä¸ªç±»å为å¦ä¸ç¸å
³ç±»å | ||||||