Dùng const qualifier** để khai báo biến hằng – không thể thay đổi giá trị sau khởi tạo. Lợi ích lớn: ví dụ hằng số PI, không muốn phần nào sửa đổi → khai báo const.
Đối tượng const có thể đặt trong read-only memory. Nếu địa chỉ không bị lấy, có thể không lưu trữ כלל.
Ví dụ
#include <iostream>
using namespace std;
int main() {
const int x = 10;
x = 12; // LỖI BIÊN DỊCH: assignment of read-only variable 'x'
return 0;
}
Const với con trỏ
| Khai báo | Ý nghĩa |
|---|---|
const int* p / int const* p |
Con trỏ tới int const – không sửa giá trị qua con trỏ |
int* const p |
Con trỏ const – không đổi địa chỉ trỏ đến |
const int* const p |
Cả hai đều const |
Const member function
class MyClass {
int value;
public:
int getValue() const { return value; } // Cam kết không sửa this->value
void setValue(int v) { value = v; }
};
Best practice
- Mặc định
constcho tham số hàm (pass by const reference:const T&). - Đánh dấu
constcho member function không sửa state. - Dùng
constexpr(C++11) cho hằng số compile-time.