• 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++

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
128 wizyt
pytanie zadane 9 listopada 2016 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,480 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,480 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,693 wizyt
0 głosów
1 odpowiedź 661 wizyt
pytanie zadane 9 maja 2017 w C# przez BlackMoon Obywatel (1,730 p.)
0 głosów
2 odpowiedzi 238 wizyt
pytanie zadane 20 listopada 2016 w C i C++ przez ka-karola Początkujący (290 p.)

93,176 zapytań

142,185 odpowiedzi

321,980 komentarzy

62,506 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1637p. - dia-Chann
  2. 1614p. - Łukasz Piwowar
  3. 1599p. - CC PL
  4. 1597p. - Łukasz Eckert
  5. 1537p. - Łukasz Siedlecki
  6. 1531p. - rucin93
  7. 1356p. - ssynowiec
  8. 1351p. - Tomasz Bielak
  9. 1328p. - Michal Drewniak
  10. 1288p. - rafalszastok
  11. 1273p. - Adrian Wieprzkowicz
  12. 1232p. - Mikbac
  13. 1169p. - Grzegorz Aleksander Klementowski
  14. 1155p. - Piotr Aleksandrowicz
  15. 1149p. - Michał Telesz
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...