LẬP TRÌNH HƯỚNG ĐÔI TƯỢNG VÀ C++

Chia sẻ: Phan Quang Hoang | Ngày: | Loại File: PDF | Số trang:337

0
121
lượt xem
33
download

LẬP TRÌNH HƯỚNG ĐÔI TƯỢNG VÀ C++

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Lap trình hư ng ñôi tưỢng và C++ là mot môn học quan trọng ñôi v i sinh viên ngành Công nghe thông tin và mot sô ngành học khác. Lap trình hư ng ñôi tương là phương pháp lap trình ch% ñ&o hien nay trong công nghiep phân mêm và tư tư+ng hư ng ñôi tượng được áp d-ng trong hâu hêt các ngôn ng/ lap trình hien ñ&i như C++ , Visual C++ , C#, Java...

Chủ đề:
Lưu

Nội dung Text: LẬP TRÌNH HƯỚNG ĐÔI TƯỢNG VÀ C++

  1. PH M VĂN T (Ch biên) NGUY N HI U CƯ NG L P T R Ì NH H Ư NG ð I T Ư NG V À C ++ NHÀ XU T B N GIAO THÔNG V N T I
  2. L I NÓI ð U L p trình hư ng ñ i tư ng và C ++ là m t môn h c quan tr ng ñ i v i sinh viên ngành Công ngh thông tin và m t s ngành h c khác. L p trình hư ng ñ i tư ng là phương pháp l p trình ch ñ o hi n nay trong công nghi p ph n m m và tư tư ng hư ng ñ i tư ng ñư c áp d ng trong h u h t các ngôn ng l p trình hi n ñ i như C++ , Visual C++ , C#, Java... Phương pháp l p trình ph bi n nh t trong nh ng năm 70 và 80 c a th k trư c là l p trình c u trúc. ðó là phương pháp t ch c, phân chia chương trình thành các hàm, th t c. Thông qua các ngôn ng như Pascal và C, ña s nh ng ngư i làm Tin h c ñã khá quen bi t v i phương pháp l p trình này. Tuy nhiên phương pháp l p trình này cũng d n b c l nhi u h n ch . Phương pháp l p trình hư ng ñ i tư ng ñã kh c ph c ñư c nh ng h n ch c a l p trình c u trúc và m ra m t giai ño n phát tri n m i trong công nghi p ph n m m. L p trình hư ng ñ i tư ng d a trên vi c t ch c chương trình thành các l p. Khác v i hàm và th t c, l p là m t ñơn v bao g m c d li u và các phương th c x lý. Vì v y l p có th mô t các th c th m t cách chân th c, ñ y ñ và ch t ch hơn. Ngôn ng C ra ñ i năm 1973 v i m c ñích ban ñ u là ñ vi t h ñi u hành Unix trên máy tính mini PDP. Sau ñó C ñã ñư c s d ng r ng rãi trên nhi u lo i máy tính khác nhau và ñã tr thành m t ngôn ng l p trình c u trúc r t ñư c ưa chu ng. ð ñưa C vào th gi i hư ng hư ng ñ i tư ng, năm 1980 B. Stroustrup ñã cho ra ñ i m t ngôn ng m i g i là C++, là m t s phát tri n m nh m c a ngôn ng C. Ngôn ng C++ là m t ngôn ng lai, t c là nó cho phép t ch c chương trình theo c các l p và các hàm. Có th nói C++ ñã thúc ñ y ngôn ng C v n ñã r t thuy t ph c ñi vào th gi i l p trình hư ng ñ i tư ng và C++ ñã tr thành ngôn ng hư ng ñ i tư ng m nh và ñư c s d ng r ng rãi nh t t nh ng năm 1990. Giáo trình này s trình b y m t cách h th ng các khái ni m c a l p trình hư ng ñ i tư ng ñư c cài ñ t trong C++ như l p, ñ i tư ng, s th a k , tính tương ng b i, khuôn hình và các kh năng m i trong xây d ng, s d ng hàm như: ñ i tham chi u, ñ i m c ñ nh, hàm trùng tên, hàm toán t . Cu i m i chương ñ u có các bài t p nh ng m c ñ khác nhau ñ ñ c gi t rèn luy n thêm. Các v n ñ ph c t p thư ng ñòi h i ph i phân tích và thi t k tương ñ i ñ y ñ trư c khi có th vi t chương trình. Tuy giáo trình này không t p trung vào phân tích 2
  3. thi t k , nhưng trong ph l c 4 chúng tôi cũng gi i thi u v n t t v phương pháp phân tích, thi t k hư ng ñ i tư ng. Cu n sách g m 9 chương và 4 ph l c. Chương 1 hư ng d n cách làm vi c v i ph n m m TC++ 3.0 ñ th nghi m các chương trình, trình b y sơ lư c v các phương pháp l p trình và gi i thi u m t s m r ng ñơn gi n c a C++ . Chương 2 trình b y các kh năng m i trong vi c xây d ng và s d ng hàm trong C++ như bi n tham chi u, ñ i có ki u tham chi u, ñ i có giá tr m c ñ nh, hàm tr c tuy n, hàm trùng tên, hàm toán t . Chương 3 nói v m t khái ni m trung tâm c a l p trình hư ng ñ i tư ng. Chương 4 trình bày chi ti t hơn v ñ nh nghĩa ch ng các toán t Chương 5 trình b y các v n ñ t o d ng, sao chép, hu b các ñ i tư ng và các v n ñ khác có liên quan. Chương 6 trình b y m t khái ni m quan tr ng t o nên kh năng m nh c a l p trình hư ng ñ i tư ng trong vi c phát tri n, m r ng ph n m m, ñó là kh năng th a k c a các l p. Chương 7 trình b y m t khái ni m quan tr ng khác trong l p trình hư ng ñ i tư ng là tính tương ng b i và phương th c o. Chương 8 nói v vi c t ch c vào/ra trong C++. Chương 9 trình b y v khuôn hình (template) trong C++. Ph l c 1 trình b y các phép toán trong C ++ và th t ưu tiên c a chúng. Ph l c 2 trình b y v b ng mã ASCII và mã quét c a các ký t . Ph l c 3 là t p h p m t s câu h i tr c nghi m và ñáp án ñ b n ñ c t ki m tra l i ki n th c. Ph l c 4 trình b y m t cách ng n g n phương pháp phân tích, thi t k và l p trình hư ng ñ i tư ng. Cu i cùng là danh m c m t s thu t ng chuyên ngành s d ng trong giáo trình này cùng v trí tham chi u ñ ñ c gi ti n tra c u, và m t s tài li u tham kh o chính. N i dung chính c a giáo trình ñư c PGS. TS. Ph m Văn t biên so n d a trên n n cu n “C++ & l p trình hư ng ñ i tư ng” c a tác gi , nhưng có m t s b sung và s a ch a. ThS. Nguy n Hi u Cư ng biên so n chương 4, ph l c 3, các bài t p cu i m i chương và hi u ch nh giáo trình. 3
  4. Khi vi t giáo trình này chúng tôi ñã h t s c c g ng ñ giáo trình ñư c hoàn ch nh, song ch c không tránh kh i thi u sót, vì v y chúng tôi r t mong nh n ñư c s góp ý c a ñ c gi . Các tác gi Chương 1 CÁC KHÁI NI M CƠ B N Chương này trình b y các v n ñ sau: - Cách s d ng ph n m m Turbo C++ 3.0 - Tóm lư c v các phương pháp l p trình c u trúc và l p trình hư ng ñ i tư ng - Nh ng m r ng c a C++ so v i C § 1. LÀM VI C V I TURBO C++ 3.0 Các ví d trong giáo trình này ñư c vi t và th c hi n trên môi trư ng Turbo C++ (TC++ phiên b n 3.0). Sau khi cài ñ t (gi s vào thư m c C:\TC) thì trong thư m c TC s g m có các thư m c con sau: C:\TC\BGI ch a các t p ñuôi BGI và CHR C:\TC\BIN ch a các t p chương trình (ñuôi EXE) như TC, TCC, TLIB, TLINK, … C:\TC\INCLUDE ch a các t p tiêu ñ ñuôi H C:\TC\LIB ch a các t p ñuôi LIB, OBJ ð vào môi trư ng c a TC++ ch c n th c hi n t p chương trình TC.EXE trong thư m c C:\TC\BIN . Sau khi vào môi trư ng TC++ chúng ta th y vùng so n th o chương trình và h menu chính c a TC++ (g n gi ng như h menu quen thu c c a Turbo C). H menu c a TC++ g m các menu: File, Edit, Search, Run, Compile, Debug, Project, Options, Window, Help. Cách so n th o, biên d ch và ch y chương trình trong TC++ cũng gi ng như trong TC, ngo i tr ñi m sau: T p chương trình trong h so n th o c a TC++ có ñuôi m c ñ nh là CPP còn trong TC thì t p chương trình có ñuôi là C. Trong TC++ có th th c hi n c chương trình C và C++. § 2. NGÔN NG C VÀ C++ Có th nói C++ là s m r ng ñáng k c a C. ði u ñó có nghĩa là ngoài nh ng kh năng m i c a C++, m i kh năng, m i khái ni m trong C ñ u dùng ñư c trong C++. Vì trong C++ s d ng g n như toàn b các khái ni m, ñ nh nghĩa, các ki u d li u, các c u trúc l nh, các hàm và các công c khác c a C, nên s thu n l i hơn n u ñ c 4
  5. gi ñã bi t s d ng tương ñ i thành th o ngôn ng C. Giáo trình này ch y u t p trung vào các khái ni m l p trình hư ng ñ i tư ng cùng ngôn ng C++, và do ñó nó s không trình bày l i các ch ñ cơ b n trong ngôn ng C như các ki u d li u, các c u trúc ñi u khi n, … Vì C++ là s m r ng c a C, nên b n thân m t chương trình C ñã là chương trình C++. Tuy nhiên Trình biên d ch TC++ yêu c u m i hàm chu n dùng trong chương trình ñ u ph i khai báo nguyên m u b ng m t câu l nh #include, trong khi ñi u này không b t bu c ñ i v i Trình biên d ch c a TC. Trong C ta có th dùng m t hàm chu n mà b qua câu l nh #include ñ khai báo nguyên m u c a hàm ñư c dùng. ði u này không báo l i khi biên d ch, nhưng có th d n ñ n k t qu sai khi ch y chương trình. Ví d khi biên d ch chương trình sau trong môi trư ng C s không g p các dòng c nh báo (warning) và thông báo l i (error). Nhưng khi ch y s nh n ñư c k t qu sai. #include void main() { float a,b,c,p,s; printf("\nNhap a, b, c "); scanf("%f%f%f",&a,&b,&c); p=(a+b+c)/2; s= sqrt(p*(p-a)*(p-b)*(p-c)); printf("\nDien tich = %0.2f",s); getch(); } N u biên d ch chương trình này trong TC++ s nh n ñư c các thông báo l i sau: Error: Funtion ‘sqrt’ should have a prototype Error: Funtion ‘getch’ should have a prototype ð bi n chương trình trên thành m t chương trình C++ c n: + ð t tên chương trình v i ñuôi CPP + Thêm hai câu l nh #include ñ khai báo nguyên m u cho các hàm sqrt và getch: #include #include § 3. L P TRÌNH C U TRÚC VÀ L P TRÌNH HƯ NG ð I TƯ NG 3.1. Phương pháp l p trình c u trúc 5
  6. Tư tư ng chính c a l p trình c u trúc là t ch c chương trình thành các chương trình con. Trong PASCAL có hai ki u chương trình con là th t c (procedure) và hàm (fuction). Trong C ch có m t lo i chương trình con là hàm. Hàm là m t ñơn v chương trình ñ c l p dùng ñ th c hi n m t ph n vi c nào ñó như: Nh p s li u, in k t qu hay th c hi n m t s tính toán. Hàm c n có ñ i và các bi n, m ng c c b dùng riêng cho hàm. Vi c trao ñ i d li u gi a các hàm th c hi n thông qua các ñ i và các bi n toàn b . Các ngôn ng như C, PASCAL là các ngôn ng cho phép tri n khai phương pháp l p trình c u trúc. M t chương trình c u trúc g m các c u trúc d li u (như bi n, m ng, b n ghi, …) và các hàm, th t c. Nhi m v chính c a vi c t ch c thi t k chương trình c u trúc là t ch c chương trình thành các hàm, th t c. Ví d xét yêu c u sau: Vi t chương trình nh p to ñ (x,y) c a m t d y ñi m, sau ñó tìm m t c p ñi m cách xa nhau nh t. Trên tư tư ng c a l p trình c u trúc có th t ch c chương trình như sau: + S d ng hai m ng th c toàn b x và y ñ ch a to ñ d y ñi m + Xây d ng hai hàm: Hàm nhapsl dùng ñ nh p to ñ n ñi m, hàm này có m t ñ i là bi n nguyên n và ñư c khai báo như sau: void nhapsl(int n); Hàm do_dai dùng ñ tính ñ dài ño n th ng ñi qua 2 ñi m có ch s là i và j , nó ñư c khai báo như sau: float do_dai(int i, int j); Chương trình C cho bài toán trên ñư c vi t như sau: #include #include #include float x[100], y[100]; float do_dai(int i, int j) { return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2)); } void nhapsl(int n) { int i; for (i=1;i
  7. } } void main() { int n,i,j,imax,jmax; float d,dmax; printf("\nSo diem n = "); scanf("%d",&n); nhapsl(n); dmax=do_dai(1,2); imax=1; jmax=2; for (i=1;i
  8. Các phương th c có th ñư c vi t (xây d ng) bên trong ho c bên ngoài (phía dư i) ph n ñ nh nghiã l p. Cách vi t m t phương th c tương t như vi t m t hàm, ngo i tr quy t c sau: Khi xây d ng m t phương th c bên ngoài ñ nh nghĩa l p thì trong dòng ñ u tiên c n dùng tên l p và hai d u hai ch m (::) ñ t trư c tên phương th c ñ ch rõ phương th c ñó thu c l p nào. Vì phương th c và các thành ph n d li u thu c cùng m t l p, hơn n a phương th c ñư c l p lên c t ñ x lý các thành ph n d li u, nên trong thân c a phương th c có quy n truy nh p ñ n các thành ph n d li u (c a cùng l p). Sau khi ñ nh nghĩa m t l p, có th dùng tên l p ñ khai báo các bi n ki u l p hay còn g i là ñ i tư ng. M i ñ i tư ng s có các thành ph n d li u và các phương th c. L i g i m t phương th c c n ch a tên ñ i tư ng ñ xác ñ nh phương th c th c hi n t ñ i tư ng nào. M t chương trình hư ng ñ i tư ng s bao g m các l p có quan h v i nhau. Vi c phân tích, thi t k chương trình theo phương pháp hư ng ñ i tư ng nh m thi t k , xây d ng các l p. T khái ni m l p n y sinh hàng lo t khái ni m khác như: Thành ph n d li u, phương th c, ph m vi, s ñóng gói, hàm t o, hàm hu , s th a k , l p cơ s , l p d n xu t, tương ng b i, phương th c o, ... Thi t k hư ng ñ i tư ng là t p trung xác ñ nh các l p ñ mô t các th c th c a bài toán. M i l p ñưa vào các thành ph n d li u c a th c th và xây d ng luôn các phương th c ñ x lý d li u. Như v y vi c thi t k chương trình xu t phát t các n i d ng các v n ñ c a bài toán. Các ngôn ng thu n tuý hư ng ñ i tư ng (như Smalltalk) ch h tr các khái ni m v l p, không có các khái ni m hàm. C ++ là ngôn ng lai, nó cho phép s d ng c các công c c a l p và hàm. ð minh ho các khái ni m v a nêu v l p trình hư ng ñ i tư ng ta tr l i xét bài toán tìm ñ dài l n nh t ñi qua 2 ñi m. Trong bài toán này ta g p m t th c th là d y ñi m. Xây d ng l p dãy ñi m (daydiem), trong ñó các thành ph n d li u c a l p d y ñi m g m: + Bi n nguyên n là s ñi m c a d y + Con tr x ki u th c tr ñ n vùng nh ch a d y hoành ñ + Con tr y ki u th c tr ñ n vùng nh ch a d y tung ñ Các phương th c c n ñưa vào theo yêu c u bài toán g m: + Nh p to ñ m t ñi m + Tính ñ dài ño n th ng ñi qua 2 ñi m Dư i ñây là chương trình vi t theo thi t k hư ng ñ i tư ng. ð th c hi n chương trình này nh ñ t tên t p có ñuôi CPP. Xem chương trình ta th y thêm m t ñi u m i trong C++ là: Các khai báo bi n, m ng có th vi t b t kỳ ch nào trong chương trình (t t nhiên ph i trư c khi s d ng bi n, m ng). #include 8
  9. #include #include #include class daydiem { public: int n; float *x, *y; float do_dai(int i, int j) { return sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2)); } void nhapsl(void); // khai báo phương th c }; void daydiem::nhapsl(void) // ñ nh nghĩa (xây d ng) phương th c { int i; printf("\nSo diem n = "); scanf("%d",&n); x=(float*)malloc((n+1)*sizeof(float)); y=(float*)malloc((n+1)*sizeof(float)); for (i=1;i
  10. for (i=1;i
  11. void main() { int n; // khai bao n printf("\n So phan tu cua day n = "); scanf("%d",&n); float *x= (float*)malloc((n+1)*sizeof(float)); for (int i=1;i
  12. const int maxsize = 1000; int a[maxsize] ; + C u trúc h ng: typedef struct { int x, y ; // To ñ c a ñi m int mau ; // Mã m u c a ñi m } DIEM ; const DIEM d = {320, 240, 15}; Chương trình dư i ñây minh ho cách dùng h ng có ki u. Chương trình t o m t c u trúc h ng (ki u DIEM) mô t ñi m gi a màn hình ñ ho v i m u tr ng. ði m này ñư c hi n th trên màn hình ñ ho . #include #include #include typedef struct { int x,y; int mau; } DIEM; void main() { int mh=0, mode=0; initgraph(&mh,&mode,""); int loi=graphresult(); if (loi) { printf("\nLoi do hoa: %s",grapherrormsg(loi)); getch(); exit(0); } const DIEM gmh = {getmaxx()/2,getmaxy()/2,WHITE}; // khai bao hang putpixel(gmh.x, gmh.y, gmh.mau); closegraph(); } Chú ý: + Có th dùng các hàm ñ gán giá tr cho các h ng có ki u (trong chương trình trên dùng các hàm getmax và getmaxy). 12
  13. + M i câu l nh nh m thay ñ i giá tr h ng có ki u ñ u b báo l i khi biên d ch chương trình. Ví d n u trong chương trình ñưa vào câu l nh: gmh.x=200; thì khi d ch chương trình s nh n ñư c thông báo l i như sau: Cannot modify a const object 4.5. Các ki u char và int Trong C m t h ng ký t ñư c xem là nguyên do ñó nó có kích thư c hai byte, ví d trong C: sizeof(‘A’) = sizeof(int) = 2 Còn trong C++ m t h ng ký t ñư c xem là giá tr ki u char và có kích thư c m t byte. Như v y trong C++ thì: sizeof(‘A’) = sizeof(char) = 1 4.6. L y ñ a ch các ph n t m ng th c hai chi u Trong TC 2.0 không cho phép dùng phép & ñ l y ñ a ch các ph n t m ng th c hai chi u. Vì v y khi nh p d li u cho m t ph n t c a ma tr n th c (dùng scanf) ta ph i nh p qua m t bi n trung gian sau ñó m i gán cho các ph n t m ng. Trong TC ++ 3.0 cho phép l y ñ a ch các ph n t m ng th c hai chi u, do ñó có th dùng scanf ñ nh p tr c ti p vào các ph n t m ng. Chương trình C++ dư i ñây s minh ho ñi u này. Chương trình nh p m t ma tr n th c c p mxn và xác ñ nh ph n t có giá tr l n nh t. #include void main() { float a[20][20], smax; int m,n,i,j, imax, jmax; puts( "Cho biet so hang va so cot cua ma tran: ") ; scanf("%d%d",&m,&n) ; for (i=1;i
  14. smax = a[1][1]; imax=1; jmax=1; for (i=1;i
  15. ð l y giá tr tuy t ñ i c a m t s , trong C c n l p ra nhi u hàm v i tên khác nhau, ví d abs cho s nguyên, fabs cho s th c, labs cho s nguyên dài, cabs cho s ph c. ði u này rõ ràng gây phi n toái cho ngư i s d ng. Trong C++ cho phép xây d ng các hàm trùng tên nhưng khác nhau v ki u ñ i. Như v y ch c n l p m t hàm ñ l y giá tr tuy t ñ i cho nhi u ki u d li u khác nhau. ð nh nghĩa ch ng toán t Vi c dùng các phép toán thay cho m t l i g i hàm rõ ràng làm cho chương trình ng n g n, sáng s a hơn nhi u. Ví d ñ th c hi n phép c ng 2 ma tr n n u dùng phép c ng và vi t: C=A+B; thì r t g n v i toán h c. Trong C++ cho phép dùng các phép toán chu n ñ ñ t tên cho các hàm (g i là ñ nh nghĩa ch ng toán t ), sau ñó có th thay l i g i hàm b ng các phép toán như nói trên. § 5. VÀO RA TRONG C++ 5.1. Các toán t và phương th c xu t nh p ð in d li u ra màn hình và nh p d li u t bàn phím, trong C++ v n có th dùng các hàm printf và scanf (như ñã ch ra trong các chương trình C++ các m c trên). Ngoài ra trong C++ còn dùng toán t xu t ñ ñưa giá tr các bi u th c ra màn hình: cout > ... >> bi n; ð nh p m t d y không quá n ký t và ch a vào m ng h (ki u char) có th dùng phương th c cin.get như sau: cin.get(h,n); Chú ý: + Toán t nh p cin >> s ñ l i ký t chuy n dòng ‘\n’ trong b ñ m, ký t này có th làm trôi phương th c cin.get. ð kh c ph c tình tr ng trên c n dùng phương th c cin.ignore ñ b qua m t ký t chuy n dòng như sau: cin.ignore(1); + ð s d ng các toán t và phương th c nói trên c n khai báo t p tiêu ñ : #include 15
  16. Chương trình sau minh ho vi c s d ng các công c vào ra m i c a C++ ñ nh p m t danh sách n thí sinh. D li u m i thí sinh g m h tên, các ñi m toán, lý, hoá. Sau ñó in danh sách thí sinh theo th t gi m c a t ng ñi m. #include #include void main() { struct { char ht[25]; float t,l,h,td; } ts[50],tg; int n,i,j; cout > n ; for (i=1;i> ts[i].h ; ts[i].td = ts[i].t + ts[i].l + ts[i].h ; } for (i=1;i
  17. getch(); } 5.2. ð nh d ng khi in ra màn hình ð quy ñ nh s th c (float, double) ñư c in ra có ñúng p ch s sau d u ch m th p phân, ta s d ng ñ ng th i các hàm sau: setiosflags(ios::showpoint); // B t c hi u showpoint setprecision(p); Các hàm này c n ñ t trong toán t xu t như sau: cout
  18. { float a[20][20], smax; int m,n,i,j,imax, jmax; cout > m >> n ; for (i=1;i
  19. Trong C++ m t ki u c u trúc cũng ñư c ñ nh nghĩa như C theo m u: struct Tên_ki u_ct { // Khai báo các thành ph n c a c u trúc }; Sau ñó ñ khai báo các bi n, m ng c u trúc, trong C dùng m u sau: struct Tên_ki u_ct danh sách bi n, m ng c u trúc ; Như v y trong C, tên vi t sau t khoá struct chưa ph i là tên ki u và chưa có th dùng ñ khai báo. Trong C++ xem tên vi t sau t khoá struct là tên ki u c u trúc và có th dùng nó ñ khai báo. Như v y ñ khai báo các bi n, m ng c u trúc trong C++ , ta có th dùng m u sau: Tên_ki u_ct danh sách bi n, m ng c u trúc ; Ví d : ð nh nghĩa ki u c u trúc TS (thí sinh) g m các thành ph n ht (h tên), sobd (s báo danh), dt (ñi m toán), dl (ñi m lý), dh (ñi m hoá) và td (t ng ñi m), sau ñó khai báo bi n c u trúc h và m ng c u trúc ts. struct TS { char ht [25]; long sobd; float dt, dl, dh, td; }; TS h, ts[1000] ; 6.2. Tên sau t khoá union ñư c xem như tên ki u h p Trong C ++ m t ki u h p (union) cũng ñư c ñ nh nghĩa như C theo m u: union Tên_ki u_h p { // Khai báo các thành ph n c a h p }; Sau ñó ñ khai báo các bi n, m ng ki u h p , trong C dùng m u sau: union Tên_ki u_h p danh sách bi n, m ng ki u h p ; Như v y trong C, tên vi t sau t khoá union chưa ph i là tên ki u và chưa có th dùng ñ khai báo. Trong C++ xem tên vi t sau t khoá union là tên ki u h p và có th dùng nó ñ khai báo. Như v y ñ khai báo các bi n, m ng ki u h p, trong C++ có th dùng m u sau: Tên_ki u_h p danh sách bi n, m ng ki u h p ; 19
  20. 6.3. Ki u li t kê (enum) Cũng gi ng như c u trúc và h p, tên vi t sau t khoá enum ñư c xem là ki u li t kê và có th dùng ñ khai báo, ví d : enum MAU { xanh, do, tim, vang } ; // ð nh nghĩa ki u MAU MAU m, dsm[10] ; // Khai báo các bi n, m ng ki u MAU Các giá tr ki u li t kê (enum) là các s nguyên. Do ñó có th th c hi n các phép tính trên các giá tr enum, có th in các giá tr enum, có th gán giá tr enum cho bi n nguyên, ví d : MAU m1 , m2 ; int n1, n2 ; m1 = tim ; m2 = vang ; n1 = m1 ; // n1 = 2 n2 = m1 + m2 ; // n2 = 5 printf (“\n %d “ , m2 ); // in ra s 3 Chú ý: Không th gán tr c ti p m t giá tr nguyên cho m t bi n enum mà ph i dùng phép ép ki u, ví d : m1 = 2 ; // l i m1 = MAU(2) ; // ñúng § 7. C P PHÁT B NH Trong C++ có th s d ng các hàm c p phát b nh ñ ng c a C như: hàm malloc ñ c p phát b nh , hàm free ñ gi i phóng b nh ñư c c p phát. Ngoài ra trong C++ còn ñưa thêm toán t new ñ c p phát b nh và toán t delete ñ gi i phóng b nh ñư c c p phát b i new. 7.1. Cách dùng toán t new ñ c p phát b nh như sau: Trư c h t c n khai báo m t con tr ñ ch a ñ a ch vùng nh s ñư c c p phát: Ki u *p; ñây Ki u có th là: + Các ki u d li u chu n c a C++ như int, long, float, double, char, ... + Các ki u t ñ nh nghĩa như: m ng, h p, c u trúc, l p, ... Sau ñó dùng toán t new theo m u: p = new Ki u ; // C p phát b nh cho m t bi n (m t ph n t ) p = new Ki u[n] ; // C p phát b nh cho n ph n t Ví d ñ c p phát b nh cho m t bi n th c ta dùng câu l nh sau: float *px = new float ; ð c p phát b nh cho 100 ph n t nguyên ta dùng các câu l nh: int *pn = new int[100] ; 20

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản