Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Wskaźnik this i constant

Ostatnio zmodyfikowano 2015-06-29 17:52
Autor Wiadomość
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.
C/C++
#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
P-134149
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.
P-134158
« 1 »
  Strona 1 z 1