po prostu dowiedzieć się, że ten mały kawałek kodu C++ nie daje mi ten sam wynik z brzękiem ++ i z g ++:C++ odniesienia na statycznej zmiennej
#include <iostream>
#include <string>
using namespace std;
const string& createString(char c) {
static string s;
s="";
for(int i=0; i<10; ++i) {
s+=c;
}
return s;
}
int main() {
cout << createString('a') << ' ' << createString('z') << endl;
return 0;
}
Z brzękiem ++ pisze on:
aaaaaaaaaa zzzzzzzzzz
jak chcę go mieć, ale z g ++ pisze on:
aaaaaaaaaa aaaaaaaaaa
Dlaczego tak jest? Czy standard implementacji g ++ jest zgodny? Co powinienem zrobić, jeśli chcę, aby funkcja zwróciła tymczasowy typ "duży" przez odniesienie, jak tutaj, aby uniknąć niepotrzebnej kopii?
dziękuję, jeśli możesz pomóc (i wybacz mi, jeśli moje pytanie nie jest jasne, angielski nie jest moim naturalnym językiem).
Dlaczego Twój "ciąg" jest najważniejszy ?! – us2012
Dla innych czytelników, Zwróć uwagę, że ciąg jest zwracany przez odniesienie. –
być zwrotnym przez odniesienie, to musi być, nie? – user2174468