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; }