C + +語言

C++語言是C語言的超集,它擴充和完善了C語言;C++語言是一種靜態類型的、編譯時的、跨平台的、不規則的中級程式語言,綜合了高級語言和低級語言的特點。

基本介紹

  • 中文名:C++語言
  • 外文名:C++
  • 性質:程式語言
  • 特點:面向對象
  • 創始人:貝爾實驗室
  • 套用:計算機中編程
C++語言的由來,C++語言的特點,C++支持的編程類型,面向對象編程,過程化編程,泛型編程,C++的使用場景,C++中的各種字元,標識符與關鍵字,分隔設定與注釋符,C++中的常用數據類,整數型數據,實數型數據,字元型數據,布爾型數據,運算符與表達式,算術運算符與算術表達式,賦值運算符與賦值表達式,邏輯運算符與邏輯表達式,類和對象,

C++語言的由來

C++語言起源於C語言。在1973~1979年間,C語言迅速成為套用最廣泛的系統程式設計語言。然而,由於C語言也存在一些缺陷,例如類型檢查機制相對較弱、缺少支持代碼重用的語言結構等,造成用C語言開發大程式比較困難。為了克服C語言存在的缺點,在1980年,由美國貝爾實驗室在C語言的基礎上,開始對C語言進行改進和擴充,並將“類”的概念引入了C語言,構成了最早的C++語言(1983年)。
後來C++中又引進了運算符重載、引用、虛函式等許多特性,並使之更加精煉。由貝爾實驗室開發出的這種過程性與對象性相結合的程式設計語言,直到1983年正式取名為C++。以後又經過不斷的完善和發展,由美國國家標準化協會ANSI和國際標準化組織ISO一起進行了標準化工作,並於1998年正式發布了C++語言的國際標準(ISO/IEC:98-14882)成為目前的C++語言。
簡單地說,C++語言是在C語言的基礎上引入了面向對象的機制而形成的一門計算機程式語言。C++繼承了C語言的大部分特點:一方面,C++語言將C語言作為其子集,使其能與C語言相兼容;另一方面,C++語言支持面向對象的程式設計,如類的概念和性質。這就是對C語言的重要改進。

C++語言的特點

C++語言的特點大致有如下3點:
1.C++語言是一種面向對象的程式設計語言。其模仿了人們建立現實世界模型的方
法。C++語言的基礎是對象和類。現實世界中客觀存在的事物都被稱為對象。例如,一輛汽車、一家百貨商場等。C++中的一個對象就是描述客觀事物的一個實體,其是構成信息系統的基本單位。類(class)是對一組性質相同對象的描述,是用戶定義的一種新的數據類型,也是C++語言程式設計的核心。
2. C++是C語言的超集。其不僅包含了C語言的大部分特性,例如指針、數組、函式、語法等。其還包含面向對象的特點,例如封裝繼承多態等。
3.C++是程式設計師和軟體開發者在實踐中創造的。

C++支持的編程類型

面向對象編程

  • 封裝:將數據和運算元據的函式綁定在一起;避免受到外界的干擾和誤用,確保了安全;
  • 數據隱藏:由封裝引申出來的另一個重要的 OOP 概念;
  • 繼承:繼承是 OOP 中一個重要的概念,代表了一種 isa 的關係;提高了代碼重用率和執行效率;
  • 多態:基於繼承和虛函式實現,是一種動態綁定技術;調用成員函式期間,根據調用函式的對象的類型動態的決定最終調用的函式(虛函式)實現。

過程化編程

  • 派生自結構化編程,使用程式調用或函式調用的方式來進行流程控制
  • 流程則由包涵一系列運算步驟的程式(Procedures)、例程(routines)、子程式(subroutines)、 方法(methods)、或函式(functions)來控制;
  • 在程式運行的任何一個時間點,都可以調用某個特定的程式;任何一個特定的程式,也能被任意一個程式或是它自己本身調用

泛型編程

  • 在程式編碼中一些包含類型參數的類型,也就是說泛型的參數只可以代表類,不能代表個別對象。(這是當今較常見的定義);
  • 在程式編碼中一些包含參數的類。其參數可以代表類或對象等等。(現在人們大多把這稱作模板);
  • 允許程式設計師在強類型程式設計語言中編寫代碼時使用一些以後才指定的類型,在實例化時(instantiate)作為參數指明這些類型;
  • 泛型定義的種類。

C++的使用場景

  • 編寫設備驅動程式和其他要求實時性的直接操作硬體的軟體;
  • 編寫蘋果電腦或 Windows PC 機系統的主要用戶接口。

C++中的各種字元

標識符與關鍵字

在C++中,有一套用來表示程式中的變數、常量、數據類型及語法關鍵字的符號,這些符號被統稱為標識符。
標識符的命名有如下幾點規則需要遵循:
  1. 標識符的第一個字元必須是字母或者下劃線。
  2. 標識符中不應有除字母、數字和下劃線以外的字元。
  3. 標識符的長度一般不超過31個字元。
  4. C++中的標識符可以大寫,也可以小寫。不過大寫和小寫是有區別的,即對應的大小寫字母會被當作不同的標識符。例如Good和good是被當作不同的標識符,Hello和HELLO也是不同的標識符。
在C++的標識符中,有些單詞組合是不能由用戶聲明的,其是由C++程式語言本身保留使用,具有特殊的含義。一般用於表示固定語句、預定義類型說明、預定義函式等。這種標識符被統稱為關鍵字或者保留字。
有了這些關鍵字,C++編譯器才能正確識別輸入的程式代碼是如何分隔的,這就好像寫套用文時為了突出重點,常常把關鍵字或者詞進行標註一樣。

分隔設定與注釋符

C++中除了標識符外,還有兩種起特殊作用的符號。一種是用來分隔代碼語句的,被稱為分隔設定;另一種是起說明作用的,被稱為注釋符。
一、劃分語句的分隔設定
其中分隔設定又被稱為C++中的標點符號。用來將單詞或者程式分隔,其表示某個程式的結束和另一個程式的開始。C++中包括如下幾種分隔設定。
1.空格符:用來作為單詞與單詞之間的分隔設定。
2.逗號:用來作為說明多個變數的分隔設定,或者多個參數之間的分隔設定。
3.分號:用來作為C++中語句的結束分隔設定。
4.花括弧:用來構造程式實體的分隔。
二、使語句無效的注釋符
注釋在程式代碼中起到對程式語句註解和說明的作用。其目的是為了代碼設計者或審查者方便閱讀程式代碼。對計算機而言其是無效的,在程式編譯時,注釋會被自動從程式代碼中忽略掉。換句話說,這就好比大家在讀書時所做的讀書筆記,可以標記在書上,也可以標記在筆記本上,但對書的內容(代碼)並沒有任何影響,只是起一個輔助說明的作用。
在C++中採用如下兩種注釋方法。
1.使用/*和*/括起來進行注釋,在/*和*/之間的字元都被作為注釋符處理,適用於多行注釋信息。
2.使用“//”,從“//”開始直到所在行的行尾,所有字元都被當作注釋處理。適用於單行注釋信息。

C++中的常用數據類

整數型數據

所謂的整數型數據類是指數據是沒有小數部分的,其值可以是正,也可以是負,簡稱為整數型。例如日常生活中用到的12、–22、1234、2009、–999、–2009、0等都是整數型的。其中12、1234、2009等又被稱為正整數,0一般也被當作正整數處理。而–22、–999,–2009等被稱為負整數。在C++中用int這個關鍵字來聲明一個存放整數型數據的變數。例如:
int nCount;             //聲明一個整數型變數nCount int nNum;        //聲明一個整數型變數nNum int abc;.        //聲明一個整數型變數abc
聲明整數型時要進行初始化,其方法如下:
int nCount=100; 
一個整數型在計算機中可以表示的數值的大小範圍是多少呢?如下表所示。
計算機系統
最 大 值
最 小 值
16位機
32 767
–32 768
32位機
2 147 483 647
–2 147 483 648
雖然整數型能表示的數已經比較大,但也有不夠用的情況。例如,在有的遊戲中表示銀河系兩個星球之間的距離是多少千米,或者太陽系的直徑是多少米等數據時,整數型變數就不夠了。為此C++中就引入了長整數類型。用long這個關鍵字來聲明一個長整數型變數。例如:
long lLen;        //聲明長整數型變數 iLenlong lCount;       //聲明長整數型變數iCount long lTime;        //聲明長整數型變數 iTime 
長整數型變數,其存儲數值的範圍如下表所示。
計算機系統
最 大 值
最 小 值
16位機
2 147 483 647
–2 147 483 648
32位機
2 147 483 647
–2 147 483 648
計算機中長整數可能會降低程式執行的速度,所以有時候為了節約空間和提高程式執行速度,C++中又引入了短整數。在C++中用short這個關鍵字來聲明一個短整數型變數,其數值的範圍在16位和32位計算機上都是一樣的,為32 767~–32 768。例如:
short sCount;       //聲明短整數型變數 sCount short sNum;        //聲明短整數型變數 sNum short sLen;        //聲明短整數型變數 sLen
計算機為了在不增加存儲空間和不影響執行速度的前提下,在存儲數據時,直接把存儲數據的符號去掉,這樣變數能表示的最大值就擴大了,這種存儲的數據在C++中就被稱為無符號數據類型。
C++中聲明無符號整數型變數,是在int關鍵字前加上unsigned關鍵字。例如:
unsigned int unCount;     //聲明無符號整數型變數 unCount unsigned int unNum;      //聲明無符號整數型變數 unNum unsigned int abc;      //聲明無符號整數型變數 abc 
無符號整數型變數存放的數值範圍如表所示。
計算機系統
最 大 值
最 小 值
16位機
65 535
0
32位機
4 294 967 295
0
然有無符號的整數型變數,那么也就有無符號的長整數和短整數型變數,其聲明都是在原關鍵字前加上unsigned關鍵字。例如:
unsigned long ulCount;   //聲明無符號的長整數型變數 uiCount unsigned long ulNum;    //聲明無符號的長整數型變數 uiNum unsigned short usLen;    //聲明無符號的短整數型變數 usLen unsigned short usCount;  //聲明無符號的短整數型變數 usCount 
無符號短整數其數值範圍在16位和32位計算機上都是65 535~0。而無符號的長整數其數值範圍如表所示。
計算機系統
最 大 值
最 小 值
16位機
4 294 967 295
0
32位機
4 294 967 295
0

實數型數據

實數型數據是由一個整數部分、一個小數部分以及可選的後綴組成的。例如,3.1415、0.5、0.875等都是實數型數據。在C++中把實數型數據按照其表示的數值範圍進行分類,可分為單精度、雙精度和長雙精度3種數據類型。
1.聲明一個單精度的實數變數使用float關鍵字,所以單精度的實數型又被稱為浮點型。例如:
float half;       //聲明單精度的實數變數 half float pi;       //聲明單精度的實數變數 pi float num;       //聲明單精度的實數變數 num
單精度實數類型一般是以32位進行存儲表示的,其數值表示範圍為3.4e+38~3.4e–38,最多只提供7位有效數字。
2.雙精度數據類型和單精度數據類似,因為其要占據的存儲空間是單精度數據類型的兩倍,所以被稱為雙精度數據類型。聲明一個雙精度類型的實數變數,使用double關鍵字。例如:
double dbNum1;      //聲明雙精度的實數變數dbNum1 double dbNum2;      //聲明雙精度的實數變數dbNum2 double dbNum3;      //聲明雙精度的實數變數dbNum3 
精度實數類型是以64位進行存儲表示的,其數值範圍為1.7E–308~1.7E+308,最多可提供16位的有效數字。
3.長雙精度數據類型,理論上是雙精度占用存儲空間的兩倍,但在實際中還是只占用64位的存儲空間。聲明一個長雙精度實數變數,使用long double關鍵字。例如:
long double dbNum1;     //聲明長雙精度的實數變數dbNum1 long double dbNum2;     //聲明長雙精度的實數變數dbNum2 long double dbNum3;  //聲明長雙精度的實數變數dbNum3 
長雙精度因為其占用的存儲空間和雙精度相同,所以其實數類型的數值表示範圍還是為1.7E–308~1.7E+308,最多可提供16位有效數字。
實數在C++中也可以包含一個指數形式的數值,其類似於數字的科學計數表示法。
所有的實數型變數在聲明時,對其進行初始化方法如下:
float half = 11111.511; double dwSize = 11111.105;
由於float型的變數只能存儲4個位元組,有效數字為7位。所以其中half中的最後一位小數是不起作用的,即其值為11111.51。但如果是double型的,則dwSize中是能夠存儲全部11111.105這個數的。

字元型數據

通常字元型數據變數是用來存儲計算機中的字元的。例如:‘A’,‘#’,‘z’,‘1’等都是字元型的數據。在計算機中,字元型變數並不是直接存儲字元,而是存儲字元的ASCII(American Standard Code for Information Interchange,美國標準信息交換碼)碼值。
ASCII碼是目前計算機中用得最廣泛的字元集及編碼,是由美國國家標準局(即ANSI)制定的,其已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。適用於所有拉丁文字字母。
根據ASCII碼標準,數值65代表大寫的‘A’,而97則代表小寫字母‘a’,表中列出了ASCII碼錶中前128個編碼的十進制表示,讀者可以不必記住這些代碼值,但必須理解每個ASCII碼都與一個特定的數值相對應的這個概念,ASCII碼錶如表所示。
Bin(二進制)
Oct(八進制)
Dec(十進制)
Hex(十六進制)
縮寫/字元
解釋
0000 0000
0
0
00
NUL(null)
空字元
0000 0001
1
1
01
SOH(start of headline)
標題開始
0000 0010
2
2
02
STX (start of text)
正文開始
0000 0011
3
3
03
ETX (end of text)
正文結束
0000 0100
4
4
04
EOT (end of transmission)
傳輸結束
0000 0101
5
5
05
ENQ (enquiry)
請求
0000 0110
6
6
06
ACK (acknowledge)
收到通知
0000 0111
7
7
07
BEL (bell)
響鈴
0000 1000
10
8
08
BS (backspace)
退格
0000 1001
11
9
09
HT (horizontal tab)
水平制表符
0000 1010
12
10
0A
LF (NL line feed, new line)
換行鍵
0000 1011
13
11
0B
VT (vertical tab)
垂直制表符
0000 1100
14
12
0C
FF (NP form feed, new page)
換頁鍵
0000 1101
15
13
0D
CR (carriage return)
回車鍵
0000 1110
16
14
0E
SO (shift out)
不用切換
0000 1111
17
15
0F
SI (shift in)
啟用切換
0001 0000
20
16
10
DLE (data link escape)
數據鏈路轉義
0001 0001
21
17
11
DC1 (device control 1)
設備控制1
0001 0010
22
18
12
DC2 (device control 2)
設備控制2
0001 0011
23
19
13
DC3 (device control 3)
設備控制3
0001 0100
24
20
14
DC4 (device control 4)
設備控制4
0001 0101
25
21
15
NAK (negative acknowledge)
拒絕接收
0001 0110
26
22
16
SYN (synchronous idle)
同步空閒
0001 0111
27
23
17
ETB (end of trans. block)
結束傳輸塊
0001 1000
30
24
18
CAN (cancel)
取消
0001 1001
31
25
19
EM (end of medium)
媒介結束
0001 1010
32
26
1A
SUB (substitute)
代替
0001 1011
33
27
1B
ESC (escape)
換碼(溢出)
0001 1100
34
28
1C
FS (file separator)
檔案分隔設定
0001 1101
35
29
1D
GS (group separator)
分組符
0001 1110
36
30
1E
RS (record separator)
記錄分隔設定
0001 1111
37
31
1F
US (unit separator)
單元分隔設定
0010 0000
40
32
20
(space)
空格
0010 0001
41
33
21
!
嘆號
0010 0010
42
34
22
"
雙引號
0010 0011
43
35
23
#
井號
0010 0100
44
36
24
$
美元符
0010 0101
45
37
25
%
百分號
0010 0110
46
38
26
&
和號
0010 0111
47
39
27
'
閉單引號
0010 1000
50
40
28
(
開括弧
0010 1001
51
41
29
)
閉括弧
0010 1010
52
42
2A
*
星號
0010 1011
53
43
2B
+
加號
0010 1100
54
44
2C
,
逗號
0010 1101
55
45
2D
-
減號/破折號
0010 1110
56
46
2E
.
句號
00101111
57
47
2F
/
斜槓
00110000
60
48
30
0
數字0
00110001
61
49
31
1
數字1
00110010
62
50
32
2
數字2
00110011
63
51
33
3
數字3
00110100
64
52
34
4
數字4
00110101
65
53
35
5
數字5
00110110
66
54
36
6
數字6
00110111
67
55
37
7
數字7
00111000
70
56
38
8
數字8
00111001
71
57
39
9
數字9
00111010
72
58
3A
:
冒號
00111011
73
59
3B
;
分號
00111100
74
60
3C
<
小於
00111101
75
61
3D
=
等號
00111110
76
62
3E
>
大於
00111111
77
63
3F
?
問號
01000000
100
64
40
@
電子郵件符號
01000001
101
65
41
A
大寫字母A
01000010
102
66
42
B
大寫字母B
01000011
103
67
43
C
大寫字母C
01000100
104
68
44
D
大寫字母D
01000101
105
69
45
E
大寫字母E
01000110
106
70
46
F
大寫字母F
01000111
107
71
47
G
大寫字母G
01001000
110
72
48
H
大寫字母H
01001001
111
73
49
I
大寫字母I
01001010
112
74
4A
J
大寫字母J
01001011
113
75
4B
K
大寫字母K
01001100
114
76
4C
L
大寫字母L
01001101
115
77
4D
M
大寫字母M
01001110
116
78
4E
N
大寫字母N
01001111
117
79
4F
O
大寫字母O
01010000
120
80
50
P
大寫字母P
01010001
121
81
51
Q
大寫字母Q
01010010
122
82
52
R
大寫字母R
01010011
123
83
53
S
大寫字母S
01010100
124
84
54
T
大寫字母T
01010101
125
85
55
U
大寫字母U
01010110
126
86
56
V
大寫字母V
01010111
127
87
57
W
大寫字母W
01011000
130
88
58
X
大寫字母X
01011001
131
89
59
Y
大寫字母Y
01011010
132
90
5A
Z
大寫字母Z
01011011
133
91
5B
[
開方括弧
01011100
134
92
5C
\
反斜槓
01011101
135
93
5D
]
閉方括弧
01011110
136
94
5E
^
脫字元
01011111
137
95
5F
_
下劃線
01100000
140
96
60
`
開單引號
01100001
141
97
61
a
小寫字母a
01100010
142
98
62
b
小寫字母b
01100011
143
99
63
c
小寫字母c
01100100
144
100
64
d
小寫字母d
01100101
145
101
65
e
小寫字母e
01100110
146
102
66
f
小寫字母f
01100111
147
103
67
g
小寫字母g
01101000
150
104
68
h
小寫字母h
01101001
151
105
69
i
小寫字母i
01101010
152
106
6A
j
小寫字母j
01101011
153
107
6B
k
小寫字母k
01101100
154
108
6C
l
小寫字母l
01101101
155
109
6D
m
小寫字母m
01101110
156
110
6E
n
小寫字母n
01101111
157
111
6F
o
小寫字母o
01110000
160
112
70
p
小寫字母p
01110001
161
113
71
q
小寫字母q
01110010
162
114
72
r
小寫字母r
01110011
163
115
73
s
小寫字母s
01110100
164
116
74
t
小寫字母t
01110101
165
117
75
u
小寫字母u
01110110
166
118
76
v
小寫字母v
01110111
167
119
77
w
小寫字母w
01111000
170
120
78
x
小寫字母x
01111001
171
121
79
y
小寫字母y
01111010
172
122
7A
z
小寫字母z
01111011
173
123
7B
{
開花括弧
01111100
174
124
7C
|
垂線
01111101
175
125
7D
}
閉花括弧
01111110
176
126
7E
~
波浪號
01111111
177
127
7F
DEL (delete)
刪除
字元型在計算機中以8位進行存儲,其表示數值的範圍為127~–128。在C++中聲明一個字元型的變數,使用關鍵字char,例如:
char no;        //聲明一個字元型變數 no char yes;        //聲明一個字元型變數 yeschar tmp;        //聲明一個字元型變數 tmp 
在C++中還有一些是由單引號引起來的,但由多個字元所組成的特殊字元,C++把這些特殊字元當作單一字元來處理,稱為轉義字元。轉義字元都具有特殊的功能,如表所示。
轉 義 字 符
說 明
\a
蜂鳴
\b
回退鍵
\f
換頁
\n
換行
\r
回車換行
\t
水平制表
\v
垂直制表
\\
反斜槓
\’
單引號
\”
雙引號
\?
問號
\nnn
八進制位模式,nnn是一個八進制數
\xnn
十六進制位模式,xnn是一個十六進制數

布爾型數據

布爾型數據即是邏輯型的簡單數據值,其只有包含兩個值:false(假)和true(真),前者序號為0,後者序號為1。在C++中,雖然布爾類型的數據量最少,但用途卻非常廣泛,其主要用於程式設計中的流程控制和邏輯判斷。
聲明一個布爾型的變數,使用bool關鍵字,例如:
bool bFlg;        //聲明一個布爾型變數 bFlg bool bOpen;        //聲明一個布爾型變數 bOpen bool bClose;       //聲明一個布爾型變數 bClose

在聲明布爾型的變數時,也可以進行初始化,其方法如下。
bool no = false; //在定義布爾型變數no時,初始化為false

運算符與表達式

C++語言中定義了豐富的運算符,如算術運算符、關係運算符、邏輯運算符等等,有些運算符需要兩個運算元,使用形式為
<運算元1>運算符<運算元2>
這樣的運算符稱為二元運算符(或二目運算符)。另一些運算符只需要一個運算元,稱為一元運算符(或單目運算符)。
運算符具有優先權與結合性。當一個表達式包含多個運算符時,先進行優先權高的運算,再進行優先權低的運算。如果表達式中出現了多個相同優先權的運算,運算順序就要看運算符的結合性了。所謂結合性,是指當一個運算元左右兩邊的運算符優先權相同時,按什麼樣的順序進行運算,是自左向右,還是自右向左。例如,我們熟悉的算術表達式6+5-2中,“+”、 “-”是同級運算符,那么是先算5-2,還是先算6+5?這就取決於算術運算符的結合性。由於算術運算符的結合性為自左向右,所以應先算6+5,然後再算11-2。

算術運算符與算術表達式

C++中的算術運算符包括基本的算術運算符和自增、自減運算符。由算術運算符、運算元和括弧構成的表達式稱為算術表達式。
基本算術運算符有:+()、-(減或負號)、*(乘)、/(除)、%(取余)。其中“-”作為負號時為一元運算符,其餘都為二元運算符。這些基本算術運算符的意義與數學中相應符號的意義是一致的。它們之間的相對優先權關係與數學中的也是一致的,即先乘除、後加減,同級運算自左向右進行。使用算術運算符要注意以下幾點:
①“%”是取余運算,只能用於整型運算元。表達式a%b的結果為a/b的餘數。 “%”的優先權與“/”相同。
②當“/”用於兩整型運算元相除時,其結果取商的整數部分,小數部分被自動捨棄。因此,表達式1/2的結果為0,這一點需要特別注意。
⑧C++中的“++” (自增)、 “--” (自減)運算符是使用方便且效率很高的兩個運算符,它們都是一元運算符。這兩個運算符都有前置和後置兩種使用形式
無論寫成前置或後置的形式,它們的作用都是將運算元的值增1(減1)後,重新寫回該運算元在記憶體中的原有位置。所以,如果變數i原來的值是1,計算表達式i++後,表達式的結果為2,並且i的值也被改變為2。但是,當自增、自減運算的結果要被用於繼續參與其它操作時,前置與後置時的情況就完全不同了。例如,如果i的值為l,則下列兩條語句的執行結果是不一樣的:
cout<<i++;cout<<++i;
第一條語句首先輸出i當前的值1,然後i自增,其值變為2;第二條語句首先使i自增為2,然後輸出i的值2。

賦值運算符與賦值表達式

C++提供了幾個賦值運算符,最簡單的賦值運算符就是“=”。帶有賦值運算符的表達式被稱為賦值表達式。例如,m=m+6就是一個賦值表達式。賦值表達式的作用就是將等號右邊表達式的值賦給等號左邊的對象。賦值表達式的類型為等號左邊對象的類型,表達式的結果為等號左邊對象被賦值後的值,運算的結合性為自右向左。請看下列賦值表達式的例子。
n=1
表達式值為1。
a=b=c=2
這個表達式從右向左運算,在c被更新為2後,表達式c=2的值為2,接著b的值被更新為2,最後a被賦值為2。
除了“=”以外,C++還提供了10種複合的賦值運算符:+=,-=,*=,/=,%=,<<=,>>=,&=,“=,|=。其中,前五個運算符是賦值運算符與算術運算符複合而成的,後五個是賦值運算符與位運算符複合而成的。關於位運算,稍後再做介紹。這裡10種運算符的優先權與“=”相同,結合性也是自右向左。現在舉例說明複合賦值運算符的功能。
 b+=2;//等價於b=b+2 x*=y+3;//等價於x=x*(y+3)
b=b+2:便是一個賦值語句,它實現的功能與賦值表達式相同。賦值表達式與賦值語句的不同點在於:賦值表達式可以作為一個更複雜表達式的一部分,繼續參與運算;而賦值語句不能。
逗號運算符與逗號表達式
在C++中,逗號也是一個運算符,它的使用形式為
<表達式1>,<表達式2>,…,<表達式n>求解順序為,先求解表達式1,再求解表達式2,最後求解表達式n的值。逗號表達式的最終結果為表達式n的值。例如:
x=2*5,x*4
表達式的結果為40。
關係運算符和關係表達式
關係運算符即比較符。
用關係運算符將兩個表達式連線起來就是關係表達式。關係表達式是一種最簡單的邏輯表達式。例如:
x>5 x+y<=20 c==a+b
注意“==”(等於)是連續的兩個等號,不要誤寫為賦值運算符“=”。
關係表達式一般用於判斷是否符合某一條件。關係表達式的結果類型為bool,值只能是true或false。條件滿足為true,條件不滿足為false。例如,當x=t時,x>5的結果就為false。

邏輯運算符與邏輯表達式

只有簡單的關係比較是遠不能滿足編程需要的,還需要用邏輯運算符將簡單的關係表達式連線起來構成較複雜的邏輯表達式。邏輯表達式的結果類型也為bool,值只能為true或false。
“!”是一元運算符,使用形式是: !運算元。非運算的作用是對運算元取反。如果運算元a的值為true,則表達式!a的值為false:如果運算元a的值為false,則表達式!a的值為true。
“&&”是二元運算符。“&&”運算的作用是求兩個運算元的邏輯與。只有當兩個運算元的值都為true時,與運算的結果才為true,其它情況下與運算的結果均為false。
“||”也是二元運算符。 “||”運算的作用是求兩個運算元的邏輯或。只有當兩個運算元的值都為false時,或運算的結果才為false,其它情況下或運算的結果均為true。

類和對象

類所表示的一組對象十分相似,可以作為模板來有效的創建對象,利用類可以產生很多的對象類所代表的事物或者概念都是抽象的。在存取Private類型數據或者函式的時候,只有類本身聲明的函式才是被允許的。類在與外部連線時,利用的就是Public共有類型函式,任何外部函式的訪問都是運行的。
對象主要是對客觀事物的某個實體進行描述,它作為一個單位,共同組成了系統,它的組成是一組屬性和一組服務,這組服務操作於這組屬性。屬性和服務是對象構成眾多要素中的兩種,屬性的實質是一個數據項,主要是對對象靜態特性進行描述,服務的實質是一個操作序列,主要是對對象動態特徵進行描述。

相關詞條

熱門詞條

聯絡我們