intTypePromotion=1

Giáo trình Lập trình hướng đối tượng và C++ - Phạm Văn Ất (Chủ biên)

Chia sẻ: Trần Thanh Phương | Ngày: | Loại File: PDF | Số trang:337

0
743
lượt xem
424
download

Giáo trình Lập trình hướng đối tượng và C++ - Phạm Văn Ất (Chủ biên)

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

Cuốn 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 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ử. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Lập trình hướng đối tượng và C++ - Phạm Văn Ất (Chủ biên)

  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++. l c 1 trình b y các phép toán trong C ++ v à th Ph 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++. C VÀ C++ § 2. NGÔN NG 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, n go 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. C hươ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 T rong 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
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2