• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyniki zwracanych danych z funkcji bez referencji, bezpośrednio w cout, oraz przed cout C++

Object Storage Arubacloud
0 głosów
104 wizyt
pytanie zadane 9 listopada 2016 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)

Witam. Dlaczego w obydwu przypadkach nie używając referencji i wywołując funkcję PRZED std::cout otrzymujemy to samo co wpisaliśmy, czyli program kopiował zmienne. A natomiast wywołując funkcję W std::cout program działa tak jakbym używał referencji, czyli operuje na oryginałach zmiennych. Dlaczego tak się dzieje? 

 

#include <iostream>

using namespace std;

template <class foo>
foo wyraz(foo slowo)
{
    slowo += "abc";
    return slowo;
}

template <class foo>
foo add(foo a)
{
    a+=50;
    return a;
}

int main()
{
    //bez referencji przed cout
    
    string napis;
    cin>>napis;
    wyraz(napis);
    cout<<napis;

    int a;
    cin>>a;
    add(a);
    cout<<a;

    //bez referencji w cout
    
    cin>>napis;
    cout<<wyraz(napis);;

    cin>>a;
    cout<<add(a);;


    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 9 listopada 2016 przez ribeiro Stary wyjadacz (11,440 p.)
wybrane 9 listopada 2016 przez Konrad Nabożny
 
Najlepsza
W obydwu przypadkach funkcja np add() kopiuje sobie wartość zmiennej i coś z nią robi, natomiast w pierwszym:
    int a;
    cin>>a;
    add(a);
    cout<<a;

funkcja add(a) "zwraca" nową wartość liczby do niej przekazanej, ale nigdzie nie jest ta wartość przypisywana. W drugim przypadku:

    cin>>a;
    cout<<add(a);

Wartość zwracana przez funkcję add(a) trafia jako argument do wypisania przez funkcję cout.

1
komentarz 9 listopada 2016 przez Konrad Nabożny Stary wyjadacz (13,460 p.)
Przecież to było oczywiste.. Przepraszam chyba nie myślałem jak to pisałem. Dzięki za odpowiedź.

Podobne pytania

0 głosów
2 odpowiedzi 9,300 wizyt
0 głosów
1 odpowiedź 514 wizyt
pytanie zadane 9 maja 2017 w C# przez BlackMoon Obywatel (1,730 p.)
0 głosów
2 odpowiedzi 191 wizyt
pytanie zadane 20 listopada 2016 w C i C++ przez ka-karola Początkujący (290 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...