Trong C++, từ khóa const
được sử dụng để định nghĩa một giá trị bất biến (không thay đổi) trong suốt thời gian chạy của chương trình. Việc sử dụng const
giúp cải thiện tính bảo mật và ổn định của mã, đồng thời cung cấp cho trình biên dịch các thông tin để tối ưu hóa hiệu suất.
Dưới đây là các trường hợp phổ biến khi sử dụng từ khóa const
trong C++.
1. Biến const
Khi khai báo một biến với từ khóa const
, giá trị của biến đó sẽ không thể thay đổi sau khi được khởi tạo.
const int MAX_SIZE = 100;
- Ở ví dụ này,
MAX_SIZE
là một biến hằng có giá trị là 100 và không thể thay đổi trong chương trình.
2. Con trỏ const
Có ba cách sử dụng const
với con trỏ, và mỗi cách có ý nghĩa khác nhau:
2.1. Con trỏ tới dữ liệu không thay đổi
Khai báo con trỏ tới dữ liệu không thay đổi, nghĩa là nội dung mà con trỏ trỏ đến không thể bị sửa đổi.
const int* ptr = &MAX_SIZE;
- Ở đây, con trỏ
ptr
có thể trỏ tới các vị trí khác nhau, nhưng giá trị tại vị trí mà nó trỏ tới không thể thay đổi.
2.2. Con trỏ const
(con trỏ không thay đổi)
Một con trỏ const
là con trỏ mà giá trị của chính con trỏ (địa chỉ mà nó trỏ đến) không thể thay đổi, nhưng dữ liệu mà nó trỏ tới có thể thay đổi.
int value = 10;
int* const ptr = &value;
- Ở đây, con trỏ
ptr
luôn trỏ tới value
, nhưng bạn có thể thay đổi giá trị của value
thông qua con trỏ.
2.3. Con trỏ const
tới dữ liệu const
Cả con trỏ và dữ liệu mà nó trỏ tới đều không thay đổi.
const int* const ptr = &MAX_SIZE;
- Trong ví dụ này, cả con trỏ
ptr
và dữ liệu mà nó trỏ tới đều không thể thay đổi.
3. Tham số hàm const
Khi khai báo một tham số hàm là const
, điều này đảm bảo rằng giá trị của tham số đó không thể bị thay đổi trong thân hàm.
void printValue(const int value) {
// value không thể thay đổi bên trong hàm
std::cout
4. Hàm const
Khi khai báo một phương thức thành viên là const
, điều này đảm bảo rằng phương thức đó không thay đổi bất kỳ thành viên nào của đối tượng.
class MyClass {
public:
int getValue() const {
return value; // Không thể thay đổi giá trị của bất kỳ biến thành viên nào
}
private:
int value = 10;
};
- Ở ví dụ này, phương thức
getValue()
không thể thay đổi trạng thái của đối tượng (giá trị các biến thành viên) vì nó được khai báo là const
.
5. Trả về giá trị const
Bạn có thể trả về một giá trị const
từ hàm, đảm bảo rằng giá trị trả về không thể bị thay đổi bởi hàm gọi.
const int& getMaxValue() {
static const int max = 100;
return max;
}
- Hàm
getMaxValue()
trả về một tham chiếu không thể thay đổi tới giá trị max
.
Kết luận
Sử dụng từ khóa const
trong C++ giúp bảo vệ các giá trị không bị thay đổi một cách vô ý, cải thiện độ tin cậy và tính bảo mật của mã. Các ứng dụng của const
có thể áp dụng cho biến, con trỏ, tham số hàm và phương thức, đem lại sự linh hoạt và an toàn trong lập trình.