[C++] Funkcja składowa substr klasy std::string

Witam!

Mam pytanie dotyczące funkcji składowej substr klasy string. Mamy taki oto fragment programu:

string nazwa("film.avi");

string samo_rozszerzenie;


samo_rozszerzenie = nazwa.substr(5, 3);


cout << samo_rozszerzenie;


//------------------------------

//Dokładnie to samo inaczej:

//------------------------------


string film("film.avi");

string rozszerzenie(film, 5, 3);


cout << rozszerzenie;

To jest dokładnie to samo. Czy jest jakaś znacząca różnica (oprócz tej, że w drugim przypadku robimy tak tylko przy DEFINICJI nowego obiektu) pomiędzy tą funkcją substr, a tym przeładowanym konstruktorem ? Po za tym to jest taki sam przypadek jak:

:arrow: size_t size()

i

:arrow: size_t length()

:?:

Tak, działanie ma to samo, tylko jak widzisz jedna linijka kodu mniej.