2.1. ý nghĩa chung của từ khoá const
Trong C cũng nh trong C++, việc khai báo một biến kiểu const sẽ quy định biến đó chỉ đợc phép đọc trong ch- ơng trình. Một cách tổng quát, từ khoá const để quy định một tên gọi nào đó trong chơng trình nh: biến, tham số của hàm, hàm, và đối tợng không đợc phép thay đổi giá trị trong chơng trình.
2.2. Truyền tham số kiểu const cho hàm
Từ khoá là const đặt phía trớc khai báo đối của hàm có tác dụng quy định: trong thân hàm không đợc phép thay đổi giá trị của đối này. Và, do đó giá trị của tham số truyền cho hàm đợc giữ nguyên khi ra khỏi hàm.
Xét 2 trờng hợp sau đây:
- Trờng hợp truyền tham số cho hàm kiểu truyền theo giá trị: Nếu ta chỉ mong muốn giá trị của tham số truyền cho hàm đợc giữ nguyên khi ra khỏi hàm thì với ý định này việc sử dụng từ khoá const là không cần thiết vì bản thân kiểu truyền theo tham trị đã đảm bảo đợc điều đó. Vậy ta sẽ chỉ dùng từ khóa const cho tham số giá trị nếu ta còn muốn quy định trong thân hàm không đợc phép viết các lệnh làm thay đổi giá trị của các tham trị đó.
- Trờng hợp đối truyền cho hàm có kiểu con trỏ hoặc kiểu tham chiếu thì ta sẽ dùng từ khoá const đặt trớc khai báo đối nếu ta muốn đảm bảo chắc chắn hoặc nhấn mạnh rằng không đợc thay đổi giá trị của đối truyền cho hàm trong thân hàm (và do đó không thay đổi giá trị khi ra khỏi hàm). Ví dụ 1 #include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> class ABC { private: char *name; public: void read_name(char *s); void get_name(const char *s); // s chi duoc du`ng, khong duoc sua void put_name();
void ABC::put_name()
{ cout <<"name: "<<name<<endl; } void ABC::read_name(char *s) { cout<<"Enter name: "; gets(s); int k=strlen(s);
name=new char[k]; strcpy(name,s);}
void ABC::get_name(const char *s) { int k=strlen(s); name=new char[k]; strcpy(name,s); } int main() { ABC a; char *s; a.read_name(s); a.put_name();
a.get_name("Nguyen Mai Lan"); a.put_name();
getche(); return 0;}