Trong Các this
con trỏ [class.this], C++ tiêu chuẩn quốc gia:Nếu `this` không phải là const, tại sao tôi không thể sửa đổi nó?
Loại
this
trong một hàm thành viên của một lớpX
là .
tức là this
không phải là const
. Nhưng tại sao nó thì đó
struct M {
M() { this = new M; }
};
cho
error: invalid lvalue in assignment <-- gcc
'=' : left operand must be l-value <-- VC++
'=' : left operand must be l-value <-- clang++
'=' : left operand must be l-value <-- ICC
(source: some online compiler frontends)
Nói cách khác, this
không const
, nhưng nó thực sự là!
từ khoá 'this' không phải là một biến, do đó chúng tôi không thể nói rằng nó là hằng số hay không. –
ngay cả khi điều này sẽ làm việc sau đó bạn chỉ có xây dựng một vòng lặp vô tận. –
@vlad_tepesch: Hoặc là đệ quy vô hạn (như bạn có thể làm trong python). Tuy nhiên, đây không phải là câu hỏi. –