[C++] Wskaźnik this i constant
Ostatnio zmodyfikowano 2015-06-29 17:52
KiddingMe Temat założony przez niniejszego użytkownika |
[C++] Wskaźnik this i constant » 2015-06-29 13:41:56 Hej forumowicze powiedzcie mi dlaczego poniższy kod wykonuje się, skoro przeładowany operator() nie ma dopisku const, a wywoływany jest na rzecz obiektu stałego tst? Mogę podmienić wartość składowej klasy. #include <iostream> #include <vector> #include <algorithm>
class IsEqual { int value; public: IsEqual( int v ) : value( v ) { } bool operator ()( const int & elem ) { this->value = 6; return elem == value; } };
int main() { const IsEqual tst( 2 ); std::vector < int > vec = { 3, 2, 1, 4, 3, 7, 8, 6 }; std::replace_if( vec.begin(), vec.end(), tst, 5 ); for( int i: vec ) std::cout << i << " "; std::cout << std::endl; }
Powyższy kod daje wynik: 3 2 1 4 3 7 8 5 |
|
Monika90 |
» 2015-06-29 17:52:15 Predykat do algorytmu std::replace_if jest przekazywany przez wartość, więc modyfikowana jest kopia stałej tst. |
|
| « 1 » |