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

metoda klasy string zwracajaca referencje do obiektu tej klasy.

Ostatnio zmodyfikowano 2016-11-16 23:37
Autor Wiadomość
Rashmistrz
» 2016-11-15 15:32:31
to by było bardzo źle.
Jak bardzo? Według mnie to jest bez różnicy. D:
P-153736
mateczek
» 2016-11-15 15:47:40
Jasne, ja to rozumiem. Tylko spójrzmy, kiedy mamy coś takiego:
No właśnie nie do końca. Bo przykład ze zmienną int i zwykłą funkcją bez związku z pytaniem.

Więc masz trochę inny przykład:
C/C++
#include <iostream>

using namespace std;
class counter
{
public:
    int i = 0;
    counter & inc() //2 - druga funkcja inrementująca - zwraca referencje
    {
        ++i;
        return * this;
       
    }
};
//kolejny przykład na zwrot referncji do obiektu
std::ostream & operator <<( std::ostream & s, counter & c ) {
    return s << c.i;
}

int main()
{
   
    counter licznik;
    //gdyby nie zwrot referencji do this trzeba by tak.
    licznik.inc();
    licznik.inc();
    cout << licznik;
    cout << endl;
   
   
    //a ponieważ funkcja inc zwraca referencję
    //dzięki referencji można pisać tasiemce.
    //licznik.inc() to jest to samo co licznik. bo funkcja zwraca referencję do obiektu licznik
    licznik.inc().inc().inc();
    cout << licznik << endl; //możliwe dzięki temu że funkcja operator<<()zwraca referencje
}
P-153737
mateczek
» 2016-11-15 15:55:52
Jak bardzo? Według mnie to jest bez różnicy. D:
;
funkcja "operator+()" tworzy nowy obiekt. A na swoje wytłumaczenie mam tylko to, że na hasło zwrot "*this" przez referencje od razu skojarzyło mi się "tasiemce". I ten operator+ nie przemyślałem. 
operator+=() już zwraca referencję do obiektu na rzecz którego pracuje. Często funkcje operator=(). też tak robią by można było pisać w stylu 
a = b = c;
P-153738
latajacaryba
Temat założony przez niniejszego użytkownika
» 2016-11-15 16:00:05
Chwila, od początku. Wskaźnik this wskazuje na zmienną 'i' i inkrementuje ją. Rozumiem, że wskaźnik ten przechowuje (mam nadzieję, że dobrze mówię) referencję zmiennej 'i', tak?
I zwracamy ten wskaźnik, czyli referencję. Jasne. Tylko... co z tego mamy? Do obiektu zostaje "przypisana" ta referencja? Rozumiem, jak działa. ale chce wiedzieć o co dokładnie chodzi. Dzięki za wcześniejszą pomoc
P-153739
mateczek
» 2016-11-15 16:03:56
//licznik.inc() to jest to samo co licznik. Bo funkcja "inc()" zwraca referencję do obiektu licznik

Wskaźnik "this" wskazuje obiekt licznik. Cały obiekt a nie składnik obiektu

Do obiektu zostaje "przypisana" ta referencja
NIE!!! Żadna referencja nie jest przypisywana do obiektu !!! funkcja zwraca referencję do obiektu na rzecz którego pracuje!!! co z tego mamy wyjaśniłem w przykładzie wyżej. Skasuj sobie referencję i skompiluj !!!

PS. Za szybko odpowiadasz nie przemyślawszy przykładów !!!
P-153741
latajacaryba
Temat założony przez niniejszego użytkownika
» 2016-11-16 00:27:15
Ok, tylko w klasie string są metody które z tego co zrozumiałem tworzą nową tablicę i zwracają referencję do niej? Jeśli tak to jak to się odbywa?
P-153768
mateczek
» 2016-11-16 00:55:53
a mógłbyś podać o którą metodę Ci chodzi ?? było by łatwiej.
P-153771
latajacaryba
Temat założony przez niniejszego użytkownika
» 2016-11-16 01:08:24
Weźmy na celownik 'insert'. Widziałem gdzieś w książce J. Grębosza bardzo dobry przykład o przepisywaniu tekstu 'Wesela' Wyspiańskiego do innej tablicy, żeby dodatkowo na początku wstawić (insert) imię i nazwisko autora. No i teraz jak zwracana jest referencja do tej nowej tablicy?
Ps. jutro w razie potrzeby poszukam tego fragmentu.
P-153772
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona