Wiem, że type of this
jest wskaźnikiem prvalue ("czystej" rwartości) i że może on zostać zmieniony na wskaźnik na stały i/lub wskaźnik na zmienny (wpływając na dostęp do jego zmiennych instancji), dołączając słowa kluczowe: const
lub volatile
na końcu definicji funkcji, do której należy.Kiedy to ma znaczenie, że "to" jest wartością rowności?
Wiem również, że this
jest czasami (nieprawidłowo) opisywany jako wskaźnik const, być może jako sposób na powiedzenie "nie można wykonać przypisania do this
". Jako wartość, jest z natury nieprzylegalna, a więc nie ma potrzeby rutynowej koncepcji.
Wiem również, że w C++ 11 zdarzają się sytuacje, w których bycie rwartą lub lwartością może wpływać na rozstrzyganie połączeń, ale starałem się przezwyciężyć te możliwości i nie jestem pewien, czy istnieje przypadek gdzie byłoby naprawdę ważne, aby nazywać rozdzielczość, że this
jest wskaźnikiem rvalue, a nie wskaźnikiem lvalue const
.
Czy istnieje przypadek, gdy ta różnica sprawia, że rzeczywisty wpływ, z punktu widzenia programisty, takich jak kontekst gdzie rvalue wskaźnik może być wykorzystany że const
lwartość wskaźnik nie może być używany, gdzie const
lwartość wskaźnik może być wykorzystany że wskaźnik rurnue nie może, lub gdzie różnica wpływa na rozdzielczość połączenia?
Inna konsekwencja polega na tym, że przechwycenie 'this' w lambda jest specjalnym przypadkiem językowym (ponieważ zwykle można przechwytywać tylko wartości średnie) –
Mam rację mówiąc, że" ponieważ "i to jest nielegalne, nie możemy również przekazać tego" 'do funkcji, która przyjmuje referencję rwartości? Czy wystarczyłoby to, aby udowodnić, że na rozstrzygnięcie połączenia połączenia przechodzącego przez "to" nie może mieć wpływu jego status rwartości? Lub może coś takiego jak [blokowanie przekazywania wartości rvalues jako argumenty] (http://stackoverflow.com/questions/6307526/c0x-const-rvalue-reference-as-function-parameter) nadal stosuje się do 'this'? –