Mã đi đầu tiên:Hàm const thành viên có thể trả về một con trỏ không const cho một thành viên dữ liệu không?
class A
{
public:
...
int *foo() const
{
return _px;
}
private:
int *_px;
}
Chức năng thành viên foo
trả về một con trỏ không const để private
viên _px
, trong đó, tôi nghĩ rằng, sẽ mở ra một cánh cửa để sửa đổi thành viên _px
, phải không?
Là foo
một chức năng thành viên const
? Tôi có nên thêm const
trước loại trả lại không?
CẬP NHẬT
Thật là một const thành viên-chức năng nên đảm bảo là, nó không thể thay đổi bất kỳ dữ liệu thành viên, phải không?
Trong trường hợp của tôi, chức năng foo
không mở một cánh cửa để sửa đổi class A
s dữ liệu thành viên _px
, nhưng một cánh cửa để sửa đổi những gì _px
trỏ đến, Vì vậy, câu hỏi của tôi là, điều này vi phạm những gì một const chức năng cần đảm bảo ?
Trình biên dịch nói với cảnh báo được bật? – Arunmu
@ArunMu gcc 4.6.1 không nói gì cả. – jrok
@ArunMu, vâng, dường như không có gì. – Alcott