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.