Tải bản đầy đủ (.pdf) (231 trang)

C++ lập trình hướng đối tượng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.34 MB, 231 trang )



Trang | 1

ĐNG NGC HOÀNG THÀNH






LP TRÌNH HNG
ĐI TNG



Tài liu hc tp
C
++

Theo dõi bn cp nht trên blog ca tôi.

Trang | 2
C++


PH LC
GII THIU 7
MÔI TRNG PHÁT TRIN TÍCH HP IDE 10
CHNG  C BN V C++ 23
CHNG  BIN VÀ CÁC KIU D LIU 26


T khóa 26
Kiu d liu nguyên thy 27
Khai báo bin 28
Phm vi tác dng ca bin 29
Khi to giá tr cho bin 30
Khi to giá tr cho bin tĩnh static 31
Gii thiu v xâu kí t 32
CHNG  HNG 34
Hng s nguyên 34
Hng s thc có du chm đng 34
Hng kí t và hng xâu kí t 35
Hng logic 36
Đnh nghĩa mt hng #define 36
Khai báo hng const 37
CHNG . TOÁN T 38
Toán t gán 38
Toán t thc hin phép toán s hc 39
Toán t gán hp nht 40
Toán t tăng và gim 40
Toán t so sánh 41
Toán t logic 42
Toán t điu kin 43
Toán t phân tách 45

Trang | 3
C++

Toán t dch bit 45
Toán t chuyn đi kiu d liu 48
Các toán t khác 49

Th t u tiên ca các toán t 49
CHNG  XUT NHP C BN 
Xut d liu chun cout 52
Nhp d liu chun cin 53
Nhp d liu nh lp stringstream 55
CHNG  CÁC CU TRÚC LNH ĐIU KHIN 
Cu trúc lnh có điu kin if và else 58
Cu trúc lp 60
Cu trúc la chn switch 67
CHNG  HÀM 72
Khai báo và s dng hàm 73
Phm vi tác dng ca bin 77
Hàm không tr v giá tr - Hàm void. 78
Tham bin và tham tr 79
Giá tr mc đnh ca tham s hình thc 82
Chng cht hàm 83
Hàm ni tuyn 84
Hàm đ quy 85
CHNG  CÁC KIU D LIU CÓ CU TRÚC 88
Mng 88
Xâu kí t 91
CHNG  CON TR 
Toán t tham chiu & 93
Toán t tham chiu ngc * 94
Khai báo bin con tr 96
Con tr, mng và xâu kí t 98

Trang | 4
C++


Các phép toán s hc trên con tr 100
Con tr tr vào con tr 102
Con tr void 104
Con tr null 105
Con tr hàm 105
CHNG  B NH ĐNG 107
Toán t new và new 107
Toán t delete và delete 109
CHNG  KIU D LIU STRUCT VÀ CON TR STRUCT 110
Struct 110
Con tr struct 114
Struct lng nhau 115
Kích thc b nh ca struct 115
CHNG  CÁC KIU D LIU KHÁC 117
Kiu d liu t đnh nghĩa 117
Kiu d liu union thng 117
Kiu d liu union n danh 118
Kiu d liu enum 118
CHNG  LP TRÌNH HNG ĐI TNG 120
Lch s hình thành 120
Lp và đi tng 126
Hàm to và hàm hy 130
Chng cht hàm to 132
Hàm to sao chép 133
Tính đóng gói – Encapsulation 139
Con tr đi tng 140
Lp đc khai báo nh t khóa struct và union 141
Con tr this 141
Thành viên tĩnh – T khóa static 143


Trang | 
C++

Hàm bn và lp bn 144
Chng cht toán t 147
Tính k tha - Inheritance 153
Các mc truy cp 156
Tính đa k tha – Multiple Inheritance 159
Tính đa hình – Polymorphism 160
Tính tru tng hóa - Abstraction 172
Hàm mu – Template Function 173
Lp mu – Template class 173
CHNG  NAMESPACE 178
T khóa namespace 178
T khóa using 179
Phm vi ca namespace 180
Tái đnh danh cho namespace 181
Namespace std 181
CHNG  NGOI L 182
Mnh đ try…catch 182
Mnh đ throw 182
Th vin chun exception 183
CHNG  LÀM VIC VI FILE 186
M file 186
Đóng file 188
File văn bn 188
Kim tra trng thái ca các c hiu 189
Con tr get và put 190
File nh phân 192
B đm và Đng b hóa 193

CHNG  CÁC LP TH VIN 
1. Lp s phc complex 194

Trang | 6
C++

2. Lp ngăn xp stack 196
3. Lp hàng đi queue 197
3. Lp vector 198
4. Lp string 200
5. Lp list 203
6. Lp map 203
7. Lp set 204
8. Các lp th vin nhp xut 204
HNG DN THC HÀNH 212
BÀI THC HÀNH S 1 212
BÀI THC HÀNH S 2 213
BÀI THC HÀNH S 3 214
BÀI THC HÀNH S 4 215
BÀI THC HÀNH S 5 215
BÀI THC HÀNH S 6 216
BÀI TP NÂNG CAO 218
BÀI TP LN 
DANH SÁCH HÌNH 228
TRA CU T KHÓA 
TÀI LIU THAM KHO 230





Trang | 7
C++

GII THIU

1. Cu trúc ca giáo trình
Giáo trình đc chia ra làm 17 chng và mi chng đc chia làm
các mc khác nhau. Các chng đc sp xp theo trình t t lp trình
hng th tc trên C đn lp trình hng đi tng và các lp th
vin c bn. Đc gi có th truy cp vào mc bt kì t phn ph lc nm
đu sách Nhiu mc bao gm các ví d đ mô t cách s dng. Tôi
khuyên các bn nên đc các ví d này và có th hiu mi đon mã
chng trình trc khi đc chng tip theo.
Mt cách thc tt đ tăng lng kin thc nhn đc đó là hãy chnh
sa, b sung mã lnh mi da trên ví d mu, theo hng t duy ca
ca bn thân đ t đó có th hiu mt cách đy đ v ni dung mà ta
tip thu đc.
Sau khi đc xong giáo trình, tôi còn cung cp mt s bài tp thc hành
đ ngh đ đc gi nên th nghim. Hãy gii nhng bài tp này chúng s
rt hu ích và giúp các bn cũng c li kin thc môn hc cũng nh hiu
sâu sc hn phn lý thuyt.
Mt điu na mà đc gi cn lu ý hãy đc trang cui cùng ca cun
sách đ nm đc mt s thut ng anh-vit tng ng đc s dng
trong giáo trình này. Tôi cũng có gng s dng tên gi phù hp nht vi
đi đa s các giáo trình hin hành. Tuy nhiên, đc gi cũng nên nm các
thut ng ting anh tng ng đ có th tham kho thêm các tài liu
chuyên môn ting anh.
Khi vit giáo trình này, tôi không th tránh khi sai sót Rt mong s
đóng góp ý kin quý báu ca các bn đc gi cũng nh các bn đng
nghip. Mi s đóng góp xin liên h theo đa ch email:

Hi vng vi các ý kin đóng góp ca các bn,
giáo trình này s ngày càng hoàn thin hn.
2. Mt vài chú ý v s tng thích ca C và C++
Chun ANSI-C đc mt t chc tiêu chun quc t thng nht đa
ra Nó đc chính thc ra mt vào tháng  năm  và duyt li vào

Trang | 8
C++

năm  Tuy nhiên ngôn ng C đã tn ti trc đó mt thi gian
khá dài vào năm  Trc đó có rt nhiu trình dch không h tr
các tính năng mi bao gm c chun ANSI-C++. Giáo trình này đc xây
dng trên các chng trình dch hin đi h tr đy đ chun ANSI-C++.
Tôi đm bo rng các ví d s hot đng tt nu đc gi s dng mt
trình dch h tr ANSI-C++. Có nhiu s chn la, có th là min phí hoc
các phn mm thng mi. Trong giáo trình này, tôi gii thiu đn các
các bn hai công c biên dch C++ là GCC MinGW – min phí và Visual
C++ - thng mi.
3. Trình biên dch
Các ví d trong cun giáo trình này đc xây dng ch yu trên ch
đ console màn hình DOS Điu đó có nghĩa là nó s dng ch đ văn
bn đ hin th các kt qu. Mi trình dch C đu h tr ch đ dch
console Vi mt môi trng phát trin tích hp IDE cho C++ min phí,
chúng ta có th s dng chng trình Codeblocks hoc Eclipse. Chúng là
các môi trng phát trin tích hp h tr son tho và biên dch C++.
Chúng h tr môi trng GCC đ biên dch c C và C++. Vi CodeBlocks
chúng ta có th ti phn mm ti đa ch bên di
1
. Đi vi Eclipse nó là
mt trình son tho và biên dch ngôn ng lp trình chuyên nghip

nhng hoàn toàn min phí (vì ta có th cu hình kt hp vi các công c
biên dch khác nhau đ to ra môi trng phát trin tích hp cho các
ngôn ng lp trình khác nhau. Chúng ta có th dùng nó đ son tho và
biên dch Java, PHP, JSP, Python… và hin nhiên là c C/C++. Đây là mt
d án mã ngun m, tiêu tn hàng triu đôla ca IBM. Đ ti v bn mi
nht cho đn thi đim này năm  là Eclipse Helios, ta có th truy
cp đn đa ch bên di
2
. Đi vi Eclipse chúng ta nên s dng kt hp
vi trình biên dch C++ là MinGW, nó cũng là mt d án m. Chúng ta có
th ti v ti đa ch bên di
3
. Vi Eclipse thì công vic cu hình ban
đu tng đi phc tp. Nhng nó là mt trình son tho tuyt vi. Ta
có th s dng nó đ son tho nhiu ngôn ng lp trình bng cách cài
đt thêm plugin h tr. Nhiu nhà phát trin đã s dng Eclipse làm nn
tng cho vic phát trin các ng dng ca mình: Embarcadero s dng

1
httpwwwcodeblocksorgdownloads
2
httpftpjaistacjppubeclipsetechnologyeppdownloadsreleaseheliosReclipse-cpp-helios-
winzip
3
httpnchcdlsourceforgenetprojectmingwAutomatedMinGWInstallermingw-get-
instmingw-get-inst-mingw-get-inst-20100831.exe

Trang | 
C++


nó đ phát trin JBuider Adobe s dng nó đ phát trin Flash Buider và
rt nhiu các hãng phn mm ni ting khác.
Nu là mt lp trình viên Java Eclipse là mt s la chn không th
b qua. Nu phát trin Flash theo d án mã ngun m t Adobe Eclipse
cũng là s la chn hoàn ho. Nu phát trin C/C++, vi các trình son
tho thì Eclipse cũng là s la chn không ti. Vic s dng thành tho
Eclipse s là mt li th cho chúng ta khi tin hành nghiên cu Java, lp
trình Web, Flex, Python… sau này
Bên cnh đó chúng tôi cũng gii thiu môi trng phát trin tích hp
IDE Microsoft Visual Studio Đây là trình biên dch thng mi và là
trình biên dch chuyên nghip và ni ting nht trên h điu hành
Windows Ta có th s dng đ phát trin các ng dng trên nn NET
hoc các ng dng Win32. Nu mun phát trin các ng dng theo
hng ca Microsoft ta nên s dng Visual Studio Phiên bn mi nht
đn thi đim này là VS 2010. Nhng cn lu ý rng, khi nghiên cu
Visual C hãy chn la phiên bn dành cho Win32 mà không phi là
ng dng CLI (common language infrastructure bi nó đc phát trin
trên nn NET. Và Visual C for NET có mt s khác bit so vi Visual
C++ for Win32.


Trang | 10
C++

MÔI TRNG PHÁT TRIN TÍCH HP IDE

 CodeBlocks
Trc tiên chúng ta s tìm hiu cách to d án, biên dch mt tp tin C++
trên CodeBlocks Đc gi cũng cn lu ý rng CodeBlocks t chc công vic
theo các d án. Chúng ta có th biên dch tng tp tin cpp mt cách đn l.

Tuy nhiên, làm vic theo d án s giúp ích cho chúng ta rt nhiu khi làm
vic vi nhng tác v ln.
Đu tiên chúng ta khi đng codeblocks sau đó vào File > New  Project.
Trong hp thoi hin ra, chúng ta chn console application Hình 
Và nhp Go sau đó nhp Next. Trong hp thoi tip theo, ta chn C++ và
nhp Next.

Hình 1 – To mi d án trong CodeBlocks
Hp thoi yêu cu đin thông tin v d án s xut hin. Hãy đin tên d án,
v trí lu tr d án Sau đó nhp Next. Cui cùng nhp Finish
Trong ca s qun lý d án, ta nhp đôi chut vào tp main.cpp. Ni dung
son tho s đc nhp vào trong tp tin này.
Nu ta mun b sung các tp tin khác hoc các lp đi tng, ta có th b
sung chúng t menu File  New

Trang | 11
C++

Biên dch chng trình:
+ Nhp vào Build > Build and Run.
+ Hoc nhp phím F.
T đng đnh dng mã. Khi vit mt chng trình C hay bt kì mt
chng trình trên mt ngôn ng lp trình nào
khác, ta cn tuân th quy phm đnh dng mã
ngun. Có nhiu chun mc cho các đnh dng
mã ngun: chun Hungary, chun lc đà Dù
rng, chúng không nh hng đn vic biên dch
chng trình nhng chúng giúp ngi đc có
th d hiu chng trình ca chúng ta hn Nu
ta không nm vng các quy phm này thì có th

s dng chc năng đnh dng mã ngun t đng
ca CodeBlocks Hãy kích chut phi vào vùng son tho sau đó chn
Format this file Astyle.
T đng khi to phn thân các phng thc ca lp. Đ h tr cho
vic son tho CodeBlocks cũng h tr chc năng khi to nhanh mã
ngun Đ khi to nhanh phn khai báo thân phng thc ca lp t khai
báo prototype ca nó chúng ta đt tr chut vào sau khai báo lp (tc v trí
s chèn khai báo thân phng thc sau đó kích chut phi, chn Insert >
All class methods without implementation

Trong hp thoi hin ra, hãy chn
nhng phng thc mun khi to
phn thân tng ng sau đó nhp
Ok


Hình 2 – Khi to thân phng thc

Trang | 12
C++

2. Eclipse Helios
Sau khi ti xong Eclipe Helios v máy, hãy tin hành gii nén tp tin.
Chng trình Eclipse không yêu cu chúng ta phi cài đt nhng nó có th
làm vic nu trên máy tính đã cài mt máy o Java. Đ ti v máy o Java,
chúng ta có th truy cp vào trang ch ca Sun nay là Oracle ti đa ch
sau đây
4
.
Đ xây dng mt chng trình C/C trên Eclipse chúng ta cn:

- Eclipse Helios for C/C++ (nu phiên bn ti v là dành cho Java, ta cn
phi cài đt thêm plugin h tr; hoc có th s dng mt n bn cũ hn
ca Eclipse nh Galileo, Europa….
- Công c biên dch GCC – MingW.
- Máy o Java JVM.
Các bc cu hình trên Eclipse Helios
Bc 1. Cài đt máy o Java.
Bc 2. Cài MinGW.
Bc 3. Gii nén Eclipse Helios sau đó khi đng nó (nhp vào tp tin
eclipseexe. Thông thng Eclipse s t đng cu hình MinGW giúp ta. Nu
không, hãy thc hin bc 4.
Bc 4. Vào menu Project > Properties Trong hp thoi xut hin, hãy
chn CC Build  Settings

Hình 3 – Cu hình MinGW trong Eclipse Helios
Trong th Tool Settings ta chn GCC Assembler  General. Sau đó nhp vào
biu tng có du cng mu xanh. Hp thoi sau s hin ra:

4
httpjavadlsuncomwebappsdownloadAutoDLBundleId

Trang | 13
C++


Hình 4 – Chn đng dn đn th mc bin ca MinGW
Ta tin hành hãy nhp tên đng dn đn th mc bin ca MinGW (hoc
nhp vào nút File system đ duyt đn th mc này Mc đnh khi cài đt,
th mc này s là C:\MinGW\bin Sau đó nhp Ok Vy là công vic cu hình
đã hoàn tt.

Xây dng d án đu tiên trên Eclipse
Cũng ging nh CodeBlocks Eclipse cũng t chc chng trình theo d án.
Đ to mi mt d án trong Eclipse chúng ta có ba cách
- Vào File  New  C Project
- Vào biu tng to mi d án trên thanh công c, chn C++ Project.
- Kích chut phi vào ca s Project Explorer > chn New  C Project
Tip đn, hp thoi sau đây s xut hin.
Trong hp thoi này, nu chn mt
d án kh thi executable hãy chn
executable. Ta cũng có th chn th
vin dll static library Tng ng
vi d án kh thi, chúng ta có th
chn Empty Project hoc Hello
World C++ Project. Đi vi Empty
Project nó s to mt d án trng.
Ngc li vi Hello World C++
Project, ta s nhn đc mt file cpp
cha ni dung mà chúng ta s tho
lun trong chng tip theo.
Sau đó hãy nhp vào tên d án và
nhp Next (nu cha cu hình
MinGW hoc nhp Finish nu đã hoàn tt vic cu hình
Hình 5 - To mi d án

Trang | 14
C++

To mi mt file ni dung trong Eclipse. Mt chng trình trong C
thng chia làm hai loi tp: .cpp và .h. Tp cpp thng cha ni dung
chng trình tp h thng cha các khai báo.

T chc tp tin. Hãy to mt th mc chung đ cha toàn b ni dung sau
này, tôi tm gi th mc này là th mc src Trong th mc src hãy to hai
th mc, mt th mc cpps và mt th mc headers Th mc cpps s cha
toàn b tp cpp th mc headers s cha toàn b tp .h. Tp Main.cpp
cha hàm main s đc đt trong th mc src Nghĩa là ta s có cu trúc
tng t nh sau:
Hin nhiên ta hoàn toàn không nht thit
phi thc hin theo nh cu trúc th mc
này Tuy nhiên điu này s làm cho d án
ca ta tr nên sáng sa hn rt nhiu.
Chúng ta có th b sung thêm các th mc
ph khác nhng nên tuân th cu trúc cây
này (ví d khi cn phân bit các tp tin cpp
thành nhiu loi khác nhau thì trong th
mc cpps hãy to thêm các th mc con
khác
Biên dch mt d án
Đ biên dch mt d án, hãy nhp vào biu tng sau đây trên thay công c
ca Eclipse

Hình 7 - Biên dch mt d án
Chn Run As  Local CC Application
Mt s th thut giúp son tho nhanh
src
cpps
headers
Main.cpp
Hình 6 - Cu trúc th mc ca mt d án

Trang | 

C++

Eclipse cha đng mt tp các tin ích giúp chúng ta son tho nhanh hn
ít phát sinh li hn Sau đây tôi xin gii thiu mt vài tính năng giúp các
chúng ta son tho nhanh hn.
To mi mt lp
Vào New  Class Hp thoi sau đây s hin ra

Hình 8 - Hp thoi to mi class
Trong hp thoi này, cn lu ý source folder – th mc cha tp tin s to
mi thng s đc phân tách thành tp h và cpp namespace – phm vi
tác dng ca nó trong namespace đc ch đnh class name – tên ca lp s
to mi base class – tên ca lp cha mà nó s tha k (bm vào nút add đ
chn các lp tn ti constructor và destructor – cho phép khi to hàm
to và hàm hy. Chúng ta s tìm hiu nhng khái nim này khi làm quen vi
lp trình hng đi tng.
To nhanh các phng thc Getter và Setter
Nu khi khai báo mt lp, cùng vi các thuc tính ca nó thay vì s dng
hàm to đ thit lp giá tr ban đu, ta có th dùng hàm setter hoc đ tip
nhn giá tr t các thuc tính, ta có th dùng các hàm getter. Tôi s gii
thiu chi tit hn v các phng thc này trong phn lp trình hng đi
tng. Trong phn này tôi s hng dn cách to chúng bng thao tác nhp
chut. Vào menu Source, chn Generate Getters and Setters. Trong hp

Trang | 16
C++

thoi hin ra, hãy chn các thuc tính cn to phng thc getter và setter
sau đó nhp Ok
Mt s phím tt khác

Phím tt
Công dng
Ctrl+Space
Bt ch đ gi nhc lnh.
main – Ctrl+Space
Khi to nhanh hàm main.
Ctrl+Shift+F
Đnh dng nhanh mã ngun.
Ctrl+/
Comment vùng mã đã đc bôi đen nu
vùng bôi đen đã  ch đ comment, thì du
comment s b hy b.
Tab
Dch toàn b ni dung b bôi đen sang phi
mt tab.
Shift+Tab
Dch toàn b ni dung b bôi đen sang trái
mt tab.
Ctrl+1
Chnh sa nhanh toàn b các t ging vi
t đang đc bôi đen Sau khi chnh sa
xong, nhp Enter đ kt thúc.
Ctrl+Shift+/
To mt khi comment cho vùng văn bn
đã b bôi đen
Ctrl+Shift+\
Hy b vùng văn bn b comment bi khi
comment.
Trên đây tôi đã gii thiu s qua hai chng trình son tho min phí đ
lp trình CC CodeBlocks và Eclipse Vi CodeBlocks ch cn ti và cài

đt Môi trng h tr biên dch GCC đã đc tích hp sn. Vi Eclipse ta
phi thc hin cu hình đ kt hp vi trình biên dch GCC. Nu là ngi có
nhiu tri nghim v máy tính, thì nên chn Eclipse bi nó là chng trình
son tho rt chuyên nghip. Nu là ngi mi tip xúc máy tính, hãy chn
CodeBlock vì cài đt đn gin.
3. Visual Studio 2010 dành cho Visual C++
Visual Studio  là mt môi trng biên dch tích hp ca Microsoft Nó
là trình biên dch tt nht, hin đi nht trên h điu hành Windows Chúng
ta có th s dng nó đ biên dch C C Visual Basic J Ta s tìm hiu
Visual Studio theo hng tip cn vi C++. Mt điu cn lu ý, vi phiên
bn  này Visual Studio có hai phiên bn dành cho C++: C++ for Net và
C++ for Win32. Chúng ta ch tìm hiu v tính năng C for Win Trong ni
dung ca giáo trình này ta s xây dng các ng dng Console trên nn

Trang | 17
C++

Win32 mà không tho lun thêm v Visual C for Net bi vì nó thuc mt
phm trù tng đi khác so vi Visual C for Win
Khi đng Visual Studio 2010.
Đ khi đng VS 2010, ta có th thc hin mt trong hai cách sau
 Nhp đi chut vào biu tng VS 2010 trên nn Desktop
 Vào Start  All Programs  Microsoft Visual Studio  chn biu
tng VS 2010.

Hình 9 - Giao din tng th ca Visual Studio 
To mi d án trong VS 2010.
Cũng nh Eclipse VS cũng qun lý theo các workspace và các d án. Trong
VS workspace đc gi là Solution. Trong mi workspace có th cha
nhiu d án. Nu cha to mt d án nào, thì khi to mi mt d án,

workspace s t đng đc to Đ to mi mt d án, ta vào File  New
Project (hoc t hp phím tt CtrlShiftN
Trong hp thoi xut hin, chúng ta chn Win Console Application

Trang | 18
C++


Hình 10 - To d án Win Console

Mc name: hãy nhp tên d
án mà cn to.
Mc Location: nhp vào nút
Browse đ chn v trí lu
tr. Mc đnh Visual Studio
s lu tr d án  th mc
Documents
Mc Solution name: to mt
th mc con trong th mc
d án, hay to trc tip
trong th mc d án.
Hp thoi Hình 12 s hin ra.
Nhóm Application Type
 Windows application to ng dng winform
 Console application to ng dng chy trên DOS.
Hình 11 - Win Application Wizard

Trang | 
C++


 Dll to th vin dll.
+ Static library: to th vin tĩnh
Nhóm Add common header file
+ Alt: to header t lp th vin Alt.
+ MFC: to header t lp th vin MFC.
Nhóm Additional options
+ Empty project: to d án rng không có tp tin.
 Export symbols xut bn các biu tng.
+ Precompiled header: to tp tin tiêu đ tin biên dch.
Hãy chn Console Application và chn Empty Project Sau đó nhp Finish
To các tp tin trong d án.
Trong ca s Solution Explorer, hãy kích chut phi và chn Add:
- Nu tp tin đã tn ti, hãy chn Add Existing Items Sau đó chúng ta duyt
đn v trí tn ti tp tin.
- Nu tp tin cha tn ti, hãy chn Add New Items Trong ca s xut hin,
tùy thuc vào tp tin mà chúng ta cn, hãy chn loi tng ng. Thông
thng, trong d án ca C chúng ta s dng hai tp tin là tiêu đ .h và
thân chng trình cpp Sau đó hãy nhp tên ca tp tin và nhp Ok Tp tin
tiêu đ h thng cha các khai báo prototype ca hàm hoc lp. Ngoài ra,
nó có th cha các hàm macro, các khai báo hng và bin toàn cc đc s
dng trong toàn b chng trình Tp tin cpp thng cha phn thân ca
các hàm hoc lp. Khi làm vic vi các d án trong C++, chúng ta nên tách
chng trình thành nhiu phn và nên s dng các tp tiêu đ đ làm cho
chng trình gn gàng và d hiu hn
Sau khi chn đc tp tin cn to, hãy nhp tên ca tp tin sau đó nhp nút
Add. Tp tin mi s đc b sung vào d án.

Trang | 20
C++



Hình 12 - B sung thêm mt tp tin
- Add Class b sung các lp đi tng cho d án.  đây chúng ta chn C++
class

Hình 13 - B sung thêm lp đi tng
Nhp Add. Ca s sau đây s xut hin

Trang | 21
C++


Hình 14 - To lp bng Class Wizard
- Class name: tên ca lp.
- .h file: tên ca tiêu đ lp cũng là tên ca tp tin tiêu đ.
- .cpp file: tên ca tp tin cpp tng ng vi lp.
- Base class nu lp mi to ra tha k t mt lp khác, hãy nhp tên ca
lp c s vào đây
- Access mc tha k ca lp đang to t lp c s.
- Virtual destructor to mt phng thc hy o.
- Inline: to mt phng thc inline. Tuy chúng ta có th s dng t khóa
này nhng c ch làm vic ca Visual C là t đng b sung inline khi
biên dch nu phng thc đc cho là phù hp đ s dng inline. Điu đó
có nghĩa là chúng ta không cn dùng đn t khóa này.
Biên dch d án.
- Đ biên dch và thc thi mt d án, chúng ta nhp vào Debug  Start
Debugging hoc Start without Debugging
- Đ biên dch toàn b d án mà không thc thi d án, chúng ta vào Build,
chn Build Solution.
Mt s phím tt trong Visual Studio 2010.


Trang | 22
C++

- To vùng comment chú thích bôi đen vùng mã cn to chú thích, nhn
t hp Ctrl+K, Ctrl+C.
- Hy b vùng comment: bôi đen vùng mã đã comment nhn t hp Ctrl+K,
Ctrl+U.
- Đnh dng mã ngun bôi đen vùng mã cn đnh dng, nhn t hp Ctrl+K,
Ctrl+F.
- Đnh dng nhanh mã ngun bôi đen vùng mã lnh, nhn t hp Ctrl+K,
Ctrl+F.
- T đng hoàn tt mã và gi nhc lnh: t hp Ctrl+Space.
Visual Studio  không h tr các tính năng mnh m cho vic khi to
nhanh mã ngun. Nhng ta có th s dng tin ích Visual Assist Phiên bn
cho đn thi đim này năm  là 
Xem biu đ lp.
Đ quan sát biu đ lp trong VS 2010, ta nhp chut phi vào tên d án
(trong ca s Solution Explorer chn Show class diagram Sau đó chúng
ta kéo th các lp đi tng vào vùng biu đ.

Hình 15 - Xem biu đ lp

Chng  C bn v C++
Trang | 23
C++

CHNG  C BN V C++

Cu trúc ca mt chng trình C

Mt cách thc tt nht đ hc lp trình đó là hãy th vit mt chng
trình đu tiên. Nu chúng ta đã tng làm quen vi mt ngôn ng lp trình
nào đó thì chc hn ai cũng bit đn ví d kinh đin ca mt ngôn ng lp
trình đó là chng trình Hello world 
Mã chng trình
Kt qu


my first program


include iostream
 using namespace std
 int main
 {
 cout<<Hello world 
 return 0;


}

Hello world 
Gii thích v chng trình
 Các kí t nm sau du  s không đc biên dch mà nó đc hiu là
du comment dòng chú thích Trong C cũng nh C vic chú thích
trên mt dòng s đc đt sau du //. Nu mun to mt chú thích
nhiu dòng, chúng ta có th s dng du /* To chú thích  đây */
 Dòng này bt đu bng kí t #include. Tip đn là tên tp tin tiêu đ
(cha các th vin Th vin iostream đc đt trong du <>. Nó cha
các hàm xut nhp c bn. Hàm này là mt phn ca namespace std

 Trong C++, các thành phn ca th vin chun đc khai báo trong
namespace  đây là namespace std Đ có th truy xut đn các thành
phn ca nó, chúng ta mô t nó bng t khóa using Trong th vin
chun ca C++, đi tng cout đc t chc trong namespace std
 Bt kì mt chng trình C nào cũng phi có mt hàm main đ thc
thi chng trình Mt hàm s đc khai báo theo cu trúc trên.
T khóa int mô t kiu d liu mà hàm tr v là integer. Chúng ta cn
lu ý rng trong chng trình C thì ta có th tùy ý khai báo là void hoc
int nhng trong C thì bt buc phi khai báo là int. Vy int hay void
Chng  C bn v C++
Trang | 24
C++

trong trng hp này có thc s quan trng  Chúng ta nên luôn khai
báo hàm main có kiu d liu tr v là kiu int. S dĩ nh vy là vì khi
hàm main tr v kiu int thì theo quy c, nu chng trình có li nó s
tr v mt mã int khác  và ngc li, nu chng trình không có li, nó
s tr v mã int 0. Li  đây là li chng trình liên quan đn quá trình
biên dch, ch không phi là li liên quan đn cú pháp. Chúng ta s nhn
thy mã mà nó tr v trong dòng thông báo cui cùng khi biên dch:
process returned 0 (0x0).
Tên hàm là main. Tip theo là cp du ngoc đn dùng đ cha tham s
đính kèm Thông thng mt chng trình ng dng s cha hai tham
s trong hàm main là int argc và char* args[] Các tham s này gi là
tham s dòng lnh. Tip theo là du {}. Bên trong cp du này là chng
trình chính.
 Du m khi.
 Đi tng cout đc là C-out là chun dùng đ xut d liu ra màn
hình. Chúng ta cn lu ý hàm printf vn hot đng tt trong trng hp
này. Nu dùng hàm printf thì ta không cn khai báo th vin iostream và

namespace std  trên. Khi s dng đi tng cout, chúng ta cũng có th
b qua dòng lnh  và thay vào đó ta s vit stdcout Khi s dng đi
tng cout, chúng ta có thêm mt cách thc đ xung dòng thay vì dùng
\n đó là endl Đi tng cout thng đi vi toán t xut <<. Chúng ta có
th s dùng nhiu toán t này khi mun xut nhiu phn t riêng bit:
coutstringstringendl
 Câu lnh return dùng đ tr v giá tr ca hàm main. Nu hàm có tr
v giá tr, thì cn return mt giá tr nào đó cùng kiu d liu tr v vi
hàm. Nu hàm là void, thì không cn return.
 Du đóng khi tng ng vi m khi 
Chú ý
 Cũng nh C C là ngôn ng phân bit ch hoa và ch thng.
 Kt thúc mt dòng lnh trong C++ bao gi cũng phi có du ;
 Mt du ngoc đn  du ngoc nhn {} bao gi cũng song hành Điu
đó có nghĩa nu dùng du m thì phi có du đóng tng ng Du
ngoc đn thng dùng sau tên hàm và bên trong nó là tham s hình
thc hoc trong các lnh có cu trúc Du ngoc nhn thng dùng đ
quy đnh phm vi ca mt khi lnh scope Mt cách thc giúp chúng
ta chuyên nghip hn khi lp trình là sau du m, ta nên s dng tip

×