intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tìm hiểu cách sử dụng từ khóa "CONST" trong ngôn ngữ lập trình hướng đối tượng C++

Chia sẻ: Phan Thi Ngoc Giau | Ngày: | Loại File: PDF | Số trang:13

145
lượt xem
27
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Như đã biết, trong các đời sống cũng như mọi lĩnh vực, luôn có giá trị không thể thay đổi gọi là hằng số

Chủ đề:
Lưu

Nội dung Text: Tìm hiểu cách sử dụng từ khóa "CONST" trong ngôn ngữ lập trình hướng đối tượng C++

  1. TÌM HI U CÁCH S D NG T KHÓA "CONST" TRONG NGÔN NG L P TRÌNH HƯ NG ð I TƯ NG C++
  2. M CL C A. N i Dung........................................................................Trang 3 I. M ñ u.............................................................................Trang 3 II. H ng ...............................................................................Trang 3 a. Khai báo h ng trong C++ ................................................Trang 3 III T khóa const trong C++................................................Trang 4 1. T khóa const v i con tr ................................................Trang 4 2. T khóa const v i ñ i tư ng............................................Trang 5 a. H ng ñ i tư ng................................................................Trang 5 b. Tham chi u h ng, con tr h ng........................................Trang 5 c. Phương th c h ng............................................................Trang 7 B. K T LU N ....................................................................Trang 10 Tài li u tham kh o ...............................................................Trang 10 1
  3. A. N I DUNG: I. M ñ u Như ta ñã bi t, trong các ñ i s ng cũng như trong m i lĩnh v c, luôn có các giá tr không th thay ñ i g i là h ng s , Vd: s π v i 100 ch sô th p phân: 3,1415926535897932384626433832795028841971693993751058209749445 923078164 062862089986280348253421170679 V n ñ là trong tin h c, c m i khi dùng ñ n giá tr π thì ch l c vi t h t t t c các ch s ??? II. H ng N u dùng m t bi n ñ lưu tr giá tr c a h ng s thì có m t v n ñ là bi n thì thay ñ i ñư c giá tr l i. VD: float PI=3,14; ////// PI=8; ////// ðo n mã trên không báo l i. Lo i l i này r t khó nh n th y nhưng ñ l i h u qu r t to l n. n u sau ñó ta không chú ý c dùng bi n ñó trên các ño n mã c n s π, v y ta ph i dùng h ng ñ khai báo cho giá tr này. a. Khai báo h ng trong C++: Có 2 cách khai báo h ng - Dùng ch th #define: #define A "gia tri" tác d ng: ñ nh nghĩa macro ñ i di n cho giá tr dùng ñ thay th A trong A ño n mã tr nh ng ño n trong "" thành giá tr . ch t h còn có nhi u tác d ng khác. #define - Dùng t khóa const: const ki u tên_h ng=giá_trí; ki u const tên_h ng=giá_trí; VD: 2
  4. const int x=8; Tác d ng: Khai báo 1 h ng ki u int tên x có giá tr b ng 8. Sau khi khai báo thì ta không th thay ñ i x, ví d : x=8; //l i Câu l nh trên báo l i vì ta c g ng thay ñ i 1 h ng s . III. T khóa const trong C++ Như ta ñã bi t trên, t khóa const dùng ñ khai báo h ng: const ki u tên_h ng=giá_trí; ki u const tên_h ng=giá_trí; VD: const int x=8; int const y=4; V nñ ñây là hai cách khai báo này có khác nhau không? Và t khóa const còn tác d ng nào không? Câu tr l i là có. 1. T khóa const v i con tr ð i v i bi n con tr ta nên phân bi t hai ñi u: vùng nh con tr tr ñ n và giá tr c a vùng nh ñó. Vd: int x = 10, y = 20; const int *px = &x; Khai báo như v y, giá tr c a vùng nh mà px ñang tr ñ n là không th thay ñ i ñư c thông qua thay ñ i (*px). Do ñó, ta có các câu l nh sau: *px = 15;// l i px = &y; x = 15; Vì ta dùng *px ñ thay ñ i giá tr c a vùng nh mà px ñang tr ñ n. Chú ý: Giá tr c a x v n có th ñư c thay ñ i, ta ch không th thay ñ i giá tr này thông qua px. Nhưng v i các khai báo sau: int x = 10, y = 20; int* const px = &x; Thì px không th thay ñ i vùng nh ñang tr ñ n, nhưng giá tr c a vùng nh có th thay ñ i thông qua px *px=y; 3
  5. *px=&y;//l i V i khai báo sau: int x = 10; const int* const px = &x; B n không th thay ñ i nơi px ñang tr ñ n và thông qua (*px) cũng không th thay ñ i giá tr vùng nh ñó. 2. T khóa const v i ñ i tư ng Gi s ta có l p v i hàm t o sau: class A { int a; public: A(int t=0){a=t;} //... }; a. H ng ñ i tư ng ð khai báo h ng ñ i tư ng ta dùng t khóa const như sau: A const a(4); const A b; Ta không th thay ñ i giá tr các thu c tính c a h ng ñ i tư ng, k c thông qua con tr tr khi dùng cách ñ c bi t. VD: ta có hàm sau void A::set(int x) { a=x ; } Thì ta không th dùng hàm này ñ thay ñ i giá tr c a h ng ñ i tư ng l p A. b. Tham chi u h ng, con tr h ng Gi s có hàm có ñ i tư ng ñ u vào sau type C(A a) { //Các câu l nh } M t ñ i tư ng object s ñư c t o và máy s copy toàn b giá tr c a a vào object r i x lý. V n ñ phát sinh là khi ta có m t class v i kích thư c l n hàm s làm cho chương trình tr thì vi c chép giá tr vào tham s hình th c nên ch m ñi và ñ c bi t là s hao phí b nh và sau khi ra kh i hàm, b nh b h y khi ñó s g i hàm h y, r t d d n ñ n tình tr ng gi i phóng l i vùng nh ñã ñư c gi phóng. 4
  6. Vì v y ngư i ta thư ng dùng tham s chuy n vào là con tr hay tham chi u: type C(A *a) { //Các câu l nh } ho c type C(A &a) { //Các câu l nh } Hàm trên s d ng tham s hình th c là m t bi n con tr và hàm dư i dùng m t bi n tham chi u. Hai cách khai báo này s cho k t qu tương t nhau n u ta không dùng con tr ñ tr vào ñ i tư ng khác trong khi dùng hàm. Khi này, v i l i g i hàm như trên thì ñ a ch c a x s ñư c truy n vào, do ñó s tránh ñư c vi c ph i chép c c u trúc v i kích thư c l n. Nhưng v i khai báo như th thì giá tr c a bi n truy n vào có th b thay ñ i thông qua bi n object (vì là bi n con tr ho c tham chi u), trong khi v i cách khai báo như cũ thì ta không h mu n giá tr này b s a ñ i chút nào. Do ñó, t khóa const ñư c s d ng: type C(const A *a) { //Các câu l nh } type C(const A &a) { //Các câu l nh } Lưu ý: 1. d ng khai báo A không còn ñư c khuy n khích. const &a 2. Hàm tr v con tr có th có d ng const A* functionName(/*các ñ i s */); hay A const * functionName(/*các ñ i s */); hay const A const * functionName(/*các ñ i s */); Khi ñó nó ñư c hi u như trư ng h p con tr trên. c. Phương th c h ng. trên ta ñã nh c ñ n phương th c h ng, v y phương th c h ng là gì? Tác d ng c a nó? 5
  7. Như ta ñã biêt, m t h ng ñ i tư ng thì không th thay ñ i các thu c tính c a nó và không ñư c phép g i các phương th c có th làm thay ñ i các thu c tính c a nó, tr trư ng h p ñ c bi t: các thu c tính mutable. các phương th c ñư c các h ng ñ i tư ng s d ng g i là phương th c h ng, hay nói cách khác, các h ng ñ i tư ng ch làm vi c trên các phương th c h ng. Gi s v i l p A có m t phương th c print() như sau: class A { int a; public: A(int t=0){a=t;} //... void print(); }; void A::print() { cout
  8. public: A(int t=0){a=t;} //... void print() const; }; Khi ñó 2 câu l nh này s ch y ñư c: const A a; a.print();//////OK N u ta thay ñ i m t thu c tính c a ñ i tư ng thu c l p thông qua A phương th c print() thì s có l i. VD: void A::print() { cout
  9. Khi ñó có l i, vì sao? Vì 6 là 1 h ng. b n c n khai báo tư ng minh hơn. Và khi ñó c n thay ñ i hàm này như sau type1 ham(const type&);///////// khi ñó l i g i hàm trên có tác d ng 8
  10. B. K T LU N: trong l p trình nói chung và trong C++ nói riêng, ñúng T khóa const như ý nghĩa c a nó trong các lĩnh v c khác, là h ng, không ñ i. các hoàn c nh khác nhau thì ý nghĩa Tuy nhiên khi dùng t khóa này c a chúng cũng khác nhau, cho phép thay ñ i m t ph n hay không cho thay ñ i hoàn toàn mà v n không thay ñ i ý nghĩa ñ c thù c a t khóa này. Trong quá trình làm tài li u này, không th tránh ñư c các sai xót, mong m i ngư i góp ý, hoàn thi n thêm. 9
  11. Tài li u c a trungkien45 cviet.com, khi b n s d ng, vui lòng ghi rõ tác gi . http://forums.congdongcviet.com/showthread.php?t=41764 10
  12. Tài li u tham kh o 1. Th.s Nguy n Xuân ðài - Bài gi ng l p hư ng ñ i tư ng 2. GS Ph m Văn t - C++ Và L p trình hư ng ñ i tư ng - NXB KHKT - 1999 3. Thư vi n MSDN c a Microsoft 4. Website congdongcviet.com 5. Website wikipedia.org 6. Website congdongso.com, v i url c th : http://congdongso.com/threads/2203-C-Const-keyword.html 11
  13. Tài li u c a trungkien45 cviet.com, khi b n s d ng, vui lòng ghi rõ tác gi , c m ơn. URL: http://forums.congdongcviet.com/showthread.php?t=41764 12
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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