Từ khóa const, khi được hiển thị sau một hàm, đảm bảo người gọi hàm không có biến dữ liệu thành viên nào bị thay đổi.
Ví dụ cho lớp này,
// In header
class Node {
public:
Node();
void changeValue() const;
~Node();
private:
int value;
};
// trong cpp
void Node::changeValue() const {
this->value = 3; // This will error out because it is modifying member variables
}
Có một ngoại lệ cho quy tắc này. Nếu bạn khai báo rằng một biến dữ liệu thành viên có thể thay đổi, thì nó có thể được thay đổi bất kể nếu hàm được khai báo là const. Sử dụng có thể thay đổi được cho tình huống hiếm hoi khi một đối tượng được khai báo không đổi, nhưng trong thực tế có các biến dữ liệu thành viên cần tùy chọn để thay đổi. Một ví dụ tiềm năng về việc sử dụng nó là lưu vào bộ nhớ đệm một giá trị mà bạn có thể không muốn lặp lại phép tính ban đầu. Điều này thường hiếm gặp ... Nhưng tốt hơn là hãy nhận biết về nó.
Ví dụ cho lớp này,
// In header
class Node {
public:
Node();
void changeValue() const;
~Node();
private:
mutable int value;
};
// trong cpp
void Node::changeValue() const {
this->value = 3; // This will not error out because value is mutable
}
Nguồn
2013-07-24 02:10:49
http : //stackoverflow.com/questions/15999123/const-before-parameter-vs-const-after-function-name-c – chris
hoặc [this] (http://stackoverflow.com/questions/3141087/what-is- có nghĩa là-với-const-at-end-of-chức năng khai báo) – aaronman
@chris Thật tuyệt. Nhưng bây giờ tôi đang bối rối. Hàm 'GetSelectedCells' có NO paramater để thay đổi? – itsols