Konstrukcja obiektu w instrukcji zwrotnej.

0

Jeżeli konstruuję nowy obiekt, by po chwili go zwrócić, to czy jest on dodatkowo kopiowany przez instrukcję zwrotną? Na przykład:

std::string get_name() { // Wywołuje std::string(const char *cstr), a następnie std::string(const std::string &other)
    return std::string("Jan");
}

std::string get_last_name() { // Wywołuje jedynie std::string(const char *str)
    return "Kowalski";
}

Czy komentarze w powyższym kodzie oddają jego rzeczywiste działanie?

4

Teraz: nie oddają, kod jest funkcjonalnie identyczny.
Przed C++17: to zależy od kompilatora, (N)RVO pozwala kompilatorowi usunąć instrukcje kopiowania w takim przypadku i większość kompilatorów rzeczywiście to robi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1