Mục
l
ục
-329-
M
M
M
M
ụ
ụ
ụ
ụ
c
c
c
c
l
l
l
l
ụ
ụ
ụ
ụ
c
c
c
c
Ch
Ch
Ch
Ch
ơ
ơ
ơ
ơ
ng
ng
ng
ng
1.
1.
1.
1.
L
L
L
L
ậ
ậ
ậ
ậ
p
p
p
p
tr
tr
tr
tr
ì
ì
ì
ì
nh
nh
nh
nh
h
h
h
h
ớ
ớ
ớ
ớ
ng
ng
ng
ng
đố
đố
đố
đố
i
i
i
i
t
t
t
t
ợ
ợ
ợ
ợ
ng,
ng,
ng,
ng,
ph
ph
ph
ph
ơ
ơ
ơ
ơ
ng
ng
ng
ng
ph
ph
ph
ph
á
á
á
á
p
p
p
p
gi
gi
gi
gi
ả
ả
ả
ả
i
i
i
i
quy
quy
quy
quy
ế
ế
ế
ế
t
t
t
t
b
b
b
b
à
à
à
à
i
i
i
i
to
to
to
to
á
á
á
á
n
n
n
n
m
m
m
m
ớ
ớ
ớ
ớ
i
i
i
i
1.Phơngpháplậptrình 1
2.Bàitoánquanhệgiađình 2
3.Lậptrìnhhớngđốitợng 6
3.1Mộtsốkháiniệm 7
3.2CácuđiểmcủaLTHĐT
8
3.3NhữngứngdụngcủaLTHĐT 9
4.Cácngônngữlậptrìnhhớngđốitợng 9
5.NgônngữlậptrìnhC++ 10
Ch
Ch
Ch
Ch
ơ
ơ
ơ
ơ
ng
ng
ng
ng
2.
2.
2.
2.
C
C
C
C
á
á
á
á
c
c
c
c
m
m
m
m
ở
ở
ở
ở
r
r
r
r
ộ
ộ
ộ
ộ
ng
ng
ng
ng
c
c
c
c
ủ
ủ
ủ
ủ
a
a
a
a
C++
C++
C++
C++
so
so
so
so
v
v
v
v
ớ
ớ
ớ
ớ
i
i
i
i
C
C
C
C
1.CácđiểmkhôngtơngthíchgiữaC++vàANSIC
13
1.1Địnhnghĩahàm 13
1.2Khaibáohàmnguyênmẫu 13
1.3Sựtơngthíchgiữacontrỏ
void
vàcáccontrỏkhác 14
2.Cáckhảnăngvào/ramớicủaC++ 15
2.1Ghidữliệulênthiếtbịrachuẩn(mànhình)
cout
15
2.2Cáckhảnăngviếtratrên
cout
16
2.3Đọcdữliệutừthiếtbịvàochuẩn(bànphím
)
cin
18
3.Nhữngtiệníchchongờilậptrình 19
3.1Chúthíchcuốidòng 19
3.2Khaibáomọinơi 20
3.3Toántửphạmvi
::
20
4.Hàminline 21
5.Thamchiếu 23
5.1Thamchiếutớimộtbiến 23
5.2Truyềnthamsốchohàmbằngthamchiếu 25
5.3Giátrịtrảvềcủahàmlàthamchiếu
28
6.Địnhnghĩachồnghàm(Overloadingfunctions) 29
Trờnghợpcáchàmcómộtthamsố
31
Mục
l
ục
-330-
Trờnghợpcáchàmcónhiềuthamsố
32
7.Thamsốngầmđịnhtronglờigọihàm 32
8.Bổsungthêmcáctoántửquảnlýbộnhớđộng:newvàdelete 35
8.1Toántửcấpphátbộnhớđộngnew 35
8.2Toántửgiảiphóngvùngnhớđộng
delete
36
9.Tómtắt 38
9.1Ghinhớ 38
9.2Cáclỗithờnggặp 39
9.3Mộtsốthóiquenlậptrìnhtốt 39
10.Bàitập 39
Ch
Ch
Ch
Ch
ơ
ơ
ơ
ơ
ng
ng
ng
ng
3.
3.
3.
3.
Đố
Đố
Đố
Đố
i
i
i
i
t
t
t
t
ợ
ợ
ợ
ợ
ng
ng
ng
ng
v
v
v
v
à
à
à
à
l
l
l
l
ớ
ớ
ớ
ớ
p
p
p
p
1.Đốitợng 40
2.Lớp 42
2.1Khaibáolớp 42
2.1.1Tạođốitợng 44
2.1.2Cácthànhphầndữliệu
45
2.1.3Cáchàmthànhphần 45
2.1.4Thamsốngầmđịnhtronglờigọihàmthànhphần 49
2.1.5Phạmvilớp 50
2.1.6Từkhoáxácđịnhthuộctínhtruyxuất 50
2.1.7Gọimộthàmthànhphầntrongmộthàmthànhphầnkhác 54
2.2Khảnăngcủacáchàmthànhphần 54
2.2.1Địnhnghĩachồngcáchàmthànhphần 54
2.2.2Cácthamsốvớigiátrịngầmđịnh
56
2.2.3Sửdụngđốitợngnhthamsốcủahàmthànhphần 57
2.2.4Contrỏthis 59
3.Phépgáncácđốitợng 59
4.Hàmthiếtlập(constructor)vàhàmhuỷbỏ(destructor) 60
4.1Hàmthiếtlập 60
4.1.1Chứcnăngcủahàmthiếtlập 60
Mục
l
ục
-331-
4.1.2Mộtsốđặcđiểmquantrọngcủahàmthiếtlập
62
4.1.3Hàmthiếtlậpngầmđịnh 63
4.1.4Contrỏđốitợng 67
4.1.5Khaibáothamchiếuđốitợng 69
4.2Hàmhuỷbỏ 70
4.2.1Chứcnăngcủahàmhuỷbỏ 70
4.2.2Mộtsốquiđịnhđốivớihàmhuỷbỏ 71
4.3Sựcầnthiếtcủacáchàmthiếtlậpvàhuỷbỏ-lớpvectortrongkhônggiann
chiều
72
4.4Hàmthiếtlậpsaochép(
COPY
CONSTRUCTOR
) 75
4.4.1Cáctìnhhuốngsửdụnghàmthiếtlậpsaochép
75
4.4.2Hàmthiếtlậpsaochépngầmđịnh 76
4.4.3Khaibáovàđịnhnghĩahàmthiếtlậpsaochéptờngminh 76
4.4.4Hàmthiếtlậpsaochépcholớpvector 79
5.Cácthànhphầntĩnh(static) 83
5.1Thànhphầndữliệustatic 83
5.2Khởitạocácthànhphầndữliệutĩnh 84
5.3Cáchàmthànhphầnstatic 86
6.Đốitợnghằng(
CONSTANT
) 89
6.1Đốitợnghằng 89
6.2Hàmthànhphần
const
89
7.Hàmbạnvàlớpbạn
89
7.1Đặtvấnđề 89
7.2Hàmtựdobạncủamộtlớp 90
7.3Cáckiểubạnbèkhác 92
7.3.1Hàmthànhphầncủalớplàbạncủalớpkhác 92
7.3.2Hàmbạncủanhiềulớp 93
7.3.3Tấtcảcáchàmcủalớplàbạncủalớpkhác 94
7.4Bàitoánnhânmatrậnvớivector 95
Giảiphápthứnhất-prodlàhàmbạntựdo
95
Giảiphápthứhai-prodlàhàmthànhphầncủalớpmatrixvàlàbạncủavect97
Mục
l
ục
-332-
8.Vídụtổnghợp
98
9.Tómtắt 103
9.1Ghinhớ 103
9.2Cáclỗithờnggặp 104
9.3Mộtsốthóiquenlậptrìnhtốt 105
10.Bàitập 105
Ch
Ch
Ch
Ch
ơ
ơ
ơ
ơ
ng
ng
ng
ng
4.
4.
4.
4.
Đị
Đị
Đị
Đị
nh
nh
nh
nh
ngh
ngh
ngh
ngh
ĩ
ĩ
ĩ
ĩ
a
a
a
a
to
to
to
to
á
á
á
á
n
n
n
n
t
t
t
t
ử
ử
ử
ử
tr
tr
tr
tr
ê
ê
ê
ê
n
n
n
n
l
l
l
l
ớ
ớ
ớ
ớ
p
p
p
p
1.Giớithiệuchung 109
2.Vídụtrênlớpsốphức 110
2.1Hàmtoántửlàhàmthànhphần 110
2.2Hàmtoántửlàhàmbạn 112
3.Khảnăngvàgiớihạncủađịnhnghĩachồngtoántử 122
PhầnlớntoántửtrongC++đềucóthểđịnhnghĩachồng 122
Trờnghợpcáctoántử++và 123
Lựachọngiữahàmthànhphầnvàhàmbạn 124
4.Chiếnlợcsửdụnghàmtoántử 124
Cácphéptoánmộtngôi 124
Cácphéptoánhaingôi 124
Cácphépgán 124
Toántửtruynhậpthànhphần-> 125
Toántửtruynhậpthànhphầntheochỉsố 125
Toántửgọihàm 125
5.Mộtsốvídụtiêubiểu 125
5.1Địnhnghĩachồngphépgán= 125
5.2Địnhnghĩachồngphép[]" 130
5.3Địnhnghĩachồng<<và>> 133
5.4Địnhnghĩachồngcáctoántử
new
và
delete
135
5.5Phépnhânmatrậnvéctơ 137
6.Chuyểnđổikiểu 142
6.1Hàmtoántửchuyểnkiểuépbuộc 143
6.1.1Hàmtoántửchuyểnkiểutronglờigọihàm
145
Mục
l
ục
-333-
6.1.2Hàmtoántửchuyểnkiểutrongbiểuthức
147
6.2Hàmtoántửchuyểnđổikiểucơsởsangkiểulớp 148
6.2.1Hàmthiếtlậptrongcácchuyểnđổikiểuliêntiếp 150
6.2.2Lựachọngiữahàmthiếtlậpvàphéptoángán 150
6.2.3Sửdụnghàmthiếtlậpđểmởrộngýnghĩamộtphéptoán 152
6.3Chuyểnđổikiểutừlớpnàysangmộtlớpkhác 154
6.3.1Hàmtoántửchuyểnkiểubắtbuộc 154
6.3.2Hàmthiếtlậpdùnglàmhàmtoántử 156
7.Tómtắt
157
7.1Ghinhớ 157
7.2Cáclỗithờnggặp 158
7.3Mộtsốthóiquenlậptrìnhtốt 158
8.Bàitập 158
Mục
l
ục
-334-
Ch
Ch
Ch
Ch
ơ
ơ
ơ
ơ
ng
ng
ng
ng
5.
5.
5.
5.
K
K
K
K
ỹ
ỹ
ỹ
ỹ
thu
thu
thu
thu
ậ
ậ
ậ
ậ
t
t
t
t
th
th
th
th
ừ
ừ
ừ
ừ
a
a
a
a
k
k
k
k
ế
ế
ế
ế
1.Giớithiệuchung 161
2.Đơnthừakế 165
2.1Vídụminhhoạ 165
2.2Truynhậpcácthànhphầncủalớpcơsởtừlớpdẫnxuất 167
2.3Địnhnghĩalạicácthànhphầncủalớpcơsởtronglớpdẫnxuất 168
2.4Tínhthừakếtronglớpdẫnxuất 168
2.4.1Sựtơngthíchcủađốitợngthuộclớpdẫnxuấtvớiđốitợngthuộclớp
cơsở168
2.4.2Tơngthíchgiữacontrỏlớpdẫnxuấtvàcontrỏlớpcơsở 170
2.4.3Tơngthíchgiữathamchiếulớpdẫnxuấtvàthamchiếulớpcơsở 172
2.5Hàmthiếtlậptronglớpdẫnxuất 174
2.5.1Hàmthiếtlậptronglớp 174
2.5.2Phâncấplờigọi 176
2.5.3Hàmthiếtlậpsaochép 177
2.6Cáckiểudẫnxuấtkhácnhau 181
2.6.1Dẫnxuấtpublic 182
2.6.2Dẫnxuấtprivate 182
2.6.3Dẫnxuấtprotected 182
Bảngtổngkếtcáckiểudẫnxuất 182
3.Hàmảovàtínhđahình 183
3.1Đặtvấnđề 183
3.2Tổngquátvềhàmảo 190
3.2.1Phạmvicủakhaibáovirtual 190
3.2.2Khôngnhấtthiếtphảiđịnhnghĩalạihàmvirtual 194
3.2.3Địnhnghĩachồnghàmảo 197
3.2.4Khaibáohàmảoởmộtlớpbấtkỳtrongsơđồthừakế 197
3.2.5Hàmhuỷbỏảo
201
3.3Lớptrừutợngvàhàmảothuầntuý 204
4.Đathừakế 205
4.1Đặtvấnđề 205
Mục
l
ục
-335-
4.2Lớpcơsởảo
210
4.3Hàmthiếtlậpvàhuỷbỏ-vớilớpảo 213
4.4Danhsáchmócnốicácđốitợng 219
Xâydựnglớptrừutợng 219
4.5Tạodanhsáchmócnốikhôngđồngnhất 227
5.Tómtắt 231
5.1Ghinhớ 231
5.2Cáclỗithờnggặp 232
5.3Mộtsốthóiquenlậptrìnhtốt
232
6.Bàitập 232
Ch
Ch
Ch
Ch
ơ
ơ
ơ
ơ
ng
ng
ng
ng
6.
6.
6.
6.
Khu
Khu
Khu
Khu
ô
ô
ô
ô
n
n
n
n
h
h
h
h
ì
ì
ì
ì
nh
nh
nh
nh
1.Khuônhìnhhàm 233
1.1Khuônhìnhhàmlàgì? 233
1.2Tạomộtkhuônhìnhhàm 233
1.3Sửdụngkhuônhìnhhàm 234
1.3.1Khuônhìnhhàmchokiểudữliệucơsở 234
1.3.2Khuônhìnhhàmminchokiểuchar* 235
1.3.3Khuônhìnhhàmminvớikiểudữliệulớp 236
1.4Cácthamsốkiểucủakhuônhìnhhàm
237
1.4.1Cácthamsốkiểutrongđịnhnghĩakhuônhìnhhàm 237
1.5Giảithuậtsảnsinhmộthàmthểhiện 240
1.6Khởitạocácbiếncókiểudữliệuchuẩn 241
1.7Cáchạnchếcủakhuônhìnhhàm 241
1.8Cácthamsốbiểuthứccủamộtkhuônhìnhhàm 242
1.9Địnhnghĩachồngcáckhuônhìnhhàm 244
1.10Cụthểhoácáchàmthểhiện 246
1.11Tổngkếtvềcáckhuônhìnhhàm
247
2.Khuônhìnhlớp 247
2.1Khuônhìnhlớplàgì? 247
2.2Tạomộtkhuônhìnhlớp 248
Mục
l
ục
-336-
2.3Sửdụngkhuônhìnhlớp
249
2.4Vídụsửdụngkhuônhìnhlớp 250
2.5Cácthamsốtrongkhuônhìnhlớp 251
2.5.1Sốlợngcácthamsốkiểutrongmộtkhuônhìnhlớp 251
2.5.2Sảnsinhmộtlớpthểhiện 251
2.6Cácthamsốbiểuthứctrongkhuônhìnhlớp 252
2.7Tổngquátvềkhuônhìnhlớp 254
2.8Cụthểhoákhuônhìnhlớp 255
2.9Sựgiốngnhaucủacáclớpthểhiện
257
2.10Cáclớpthểhiệnvàcáckhaibáobạnbè 258
2.10.1Khaibáocáclớpbạnhoặccáchàmbạnthôngthờng 258
2.10.2Khaibáobạnbècủamộtthểhiệncủakhuônhìnhhàm,khuônhình
lớp258
2.10.3Khaibáobạnbècủakhuônhìnhhàm,khuônhìnhlớp 259
2.11Vídụvềlớpbảngcóhaichỉsố 259
3.Tómtắt 263
3.1Ghinhớ
263
4.Bàitập 263
Ph
Ph
Ph
Ph
ụ
ụ
ụ
ụ
l
l
l
l
ụ
ụ
ụ
ụ
c
c
c
c
1.
1.
1.
1.
C
C
C
C
á
á
á
á
c
c
c
c
k
k
k
k
ê
ê
ê
ê
nh
nh
nh
nh
xu
xu
xu
xu
ấ
ấ
ấ
ấ
t
t
t
t
nh
nh
nh
nh
ậ
ậ
ậ
ậ
p
p
p
p
1.Giớithiệuchung 265
1.1Kháiniệmvềkênh 265
1.2Thviệncáclớpvàora 265
2.Lớpostream 266
2.1Địnhnghĩachồngtoántử<<tronglớpostream 266
2.2Hàmput 266
2.3Hàmwrite 267
2.4Khảnăngđịnhdạng 267
2.4.1Chọncơsốthểhiện 267
2.4.2Đặtđộrộng 268
3.Lớpistream 270
Mục
l
ục
-337-
3.1Địnhnghĩachồngtoántử>>tronglớpistream
270
3.2Hàmthànhphầnget 271
3.3Cáchàmthànhphầngetlinevàgcount 272
3.4Hàmthànhphầnread 272
3.5Mộtsốhàmkhác
273
4.Trạngtháilỗicủakênhnhập 273
4.1Cáccờlỗi 273
4.2Cácthaotáctrêncácbitlỗi 274
4.2.1Đọcgiátrị 274
4.2.2Thayđổitrạngtháilỗi 274
4.3Địnhnghĩacáctoántử()và! 274
5.Quảnlýđịnhdạng 275
5.1Trạngtháiđịnhdạngcủamộtdòng
275
5.2Từtrạngtháiđịnhdạng 276
5.3Thaotáctrêntrạngtháiđịnhdạng 277
5.3.1Cáctoántửthaotácđịnhdạngkhôngthamsố(TTĐDKTS) 278
5.3.2Cáctoántửđịnhdạngcóthamsố(TTĐDCTS) 278
5.3.3Cáchàmthànhphần 279
6.Liênkếtkênhxuất/nhậpvớimộttậptin 280
6.1Liênkếtxuấtvớimộttậptin 280
6.2Liênkếtkênhnhậpvớimộttậptin
282
6.3Cáckhảnăngtruynhậptrựctiếp 283
6.4Cácchếđộmởtậptinkhácnhau 286
Ph
Ph
Ph
Ph
ụ
ụ
ụ
ụ
l
l
l
l
ụ
ụ
ụ
ụ
c
c
c
c
2.
2.
2.
2.
X
X
X
X
ử
ử
ử
ử
l
l
l
l
ý
ý
ý
ý
l
l
l
l
ỗ
ỗ
ỗ
ỗ
i
i
i
i
1.Bẫyvàbắtlỗi 287
2.Hoạtđộngcủachơngtrìnhkhimộtlỗiphátsinh 290
3.Xửlýlỗitronglớpứngdụng 293
Ph
Ph
Ph
Ph
ụ
ụ
ụ
ụ
l
l
l
l
ụ
ụ
ụ
ụ
c
c
c
c
3.
3.
3.
3.
B
B
B
B
à
à
à
à
i
i
i
i
to
to
to
to
á
á
á
á
n
n
n
n
quan
quan
quan
quan
h
h
h
h
ệ
ệ
ệ
ệ
gia
gia
gia
gia
đì
đì
đì
đì
nh
nh
nh
nh
Ph
Ph
Ph
Ph
ụ
ụ
ụ
ụ
l
l
l
l
ụ
ụ
ụ
ụ
c
c
c
c
4.
4.
4.
4.
M
M
M
M
ã
ã
ã
ã
ngu
ngu
ngu
ngu
ồ
ồ
ồ
ồ
n
n
n
n
b
b
b
b
à
à
à
à
i
i
i
i
to
to
to
to
á
á
á
á
n
n
n
n
quan
quan
quan
quan
h
h
h
h
ệ
ệ
ệ
ệ
gia
gia
gia
gia
đì
đì
đì
đì
nh
nh
nh
nh