Tạo phương thức const
sẽ cho phép đối tượng contant của lớp gọi nó. vì phương thức này không thể thay đổi bất kỳ thành viên nào của đối tượng (lỗi trình biên dịch).
Có thể đáng lưu ý rằng const
là một phần của chữ ký của phương thức, vì vậy trong cùng một lớp, bạn có thể có hai phương pháp của cùng một mẫu thử nghiệm nhưng một là const và cột kia thì không. Trong trường hợp này, nếu bạn gọi phương thức quá tải từ một đối tượng biến thì phương thức non-const được gọi, và nếu bạn gọi nó từ một đối tượng không đổi thì phương thức const
được gọi.
Tuy nhiên, nếu bạn chỉ có phương thức const
(không có quá tải không const), thì nó được gọi từ cả đối tượng biến và đối tượng không đổi.
Ví dụ:
#include <iostream>
using std::cout;
class Foo
{
public:
bool Happy;
Foo(): Happy(false)
{
// nothing
}
void Method() const
{
// nothing
}
void Method()
{
Happy = true;
}
};
int main()
{
Foo A;
const Foo B;
A.Method();
cout << A.Happy << '\n';
B.Method();
cout << B.Happy << '\n';
return 0;
}
Will đầu ra:
1
0
Press any key to continue . . .
Nguồn
2011-03-18 03:40:37
thể trùng lặp của [C++ sử dụng const trong phương pháp lớp] (http://stackoverflow.com/questions/5346695/c-const -use-in-class-methods) (và nhiều thứ khác!) – Johnsyweb