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