Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Từ khóa mutable trong C++


mutable là một trong các lớp lưu trữ (storage class) trong C++. Thành viên dữ liệu mutable là loại thành viên luôn có thể thay đổi. Ngay cả khi đối tượng là const. Khi cần chỉ một thành viên là biến còn lại là hằng, ta dùng mutable. Xem ví dụ để hiểu rõ.

Ví dụ mã C++

#include <iostream> 
using namespace std; 

class MyClass { 
    int x; 
    mutable int y; 
    public: 
    MyClass(int x=0, int y=0) { 
        this->x = x; 
        this->y = y; 
    } 
    void setx(int x=0) { 
        this->x = x; 
    } 
    void sety(int y=0) const { // hàm thành viên const, nhưng dữ liệu vẫn thay đổi 
        this->y = y; 
    } 
    void display() const { 
        cout << endl << "(x: " << x << " y: " << y << ")" << endl; 
    } 
}; 

int main() { 
    const MyClass s(15, 25); // Đối tượng const 
    cout << endl << "Trước khi thay đổi: "; 
    s.display(); 
    // s.setx(150); // Dòng này gây lỗi nếu bỏ comment 
    s.sety(250); 
    cout << endl << "Sau khi thay đổi: "; 
    s.display(); 
}

Kết quả

[Error] passing 'const MyClass' as 'this' argument of 'void MyClass::setx(int)' discards qualifiers [-fpermissive]

Nếu bỏ dòng s.setx(150); thì:

Kết quả

Trước khi thay đổi: (x: 15 y: 25) 
Sau khi thay đổi: (x: 15 y: 250)