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++
lượt xem 27
download
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ố
Bình luận(0) Đăng nhập để gửi bình luận!
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++
- 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++
- 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
- 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
- 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
- *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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng: Tìm Hiểu Về Địa Chỉ IPv4 (Internet Protocol version 4)
39 p | 918 | 250
-
Giáo trình Hướng dẫn sử dụng Inventor - Chương 5
10 p | 457 | 214
-
Hướng dẫn sử dụng Linux Shell
35 p | 435 | 158
-
CÁC TỪ KHÓA TRONG C SHARP - PHẦN I
6 p | 268 | 77
-
Tìm hiểu khả năng đồ họa của VB
14 p | 219 | 66
-
Cẩm nang sử dụng máy ảnh kĩ thuật số (Phần I)
9 p | 231 | 35
-
Bạn đã biết cách ngồi "đúng tư thế" khi sử dụng máy vi tính?
11 p | 262 | 34
-
Các ứng dụng Craft Ajax sử dụng JSF với CSS và Javascript, Phần 2: Các biểu mẫu JSF động Khám phá hỗ trợ JavaScript trong các thành phần JSF chuẩn
31 p | 146 | 26
-
Tìm hiểu C# và ứng dụng của C# p 12
5 p | 117 | 19
-
Tìm hiểu cách tính năng nổi bật trên Office 365
6 p | 163 | 17
-
Tìm hiểu các thuộc tính của chữ
8 p | 213 | 15
-
Cách thiết lập điều khiển và sử dụng KTorrent từ xa
7 p | 83 | 8
-
6 cách sử dụng Fresh Web Explorer để cải thiện các nỗ lực tiếp thị của bạn - Whiteboard Friday Seomoz
4 p | 69 | 7
-
Bài 12: Làm mịn da sử dụng plugin portraiture 2.3.3
1 p | 187 | 7
-
Làm thế nào để sử dụng công cụ không nhận liên kết đúng cách
15 p | 73 | 6
-
Tìm hiểu Windows Page File và cách sử dụng hiệu quả
12 p | 126 | 5
-
Cách sử dụng CHAT với mIRC: Phần 2
17 p | 88 | 5
-
Tìm hiểu về Windows Page File và cách sử dụng hiệu quả
11 p | 107 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn