Współpracownik napisał następujący kod, który, jestem przekonany, jest błędny.Jaka jest terminologia dla tego użycia konstruktora?
chcę wyjaśnić problemy do niego, ale nie wiem właściwego terminu, więc nie mogę znaleźć odnośniki do wspierania mojej pozycji:
jego kod:
BSTR someString = _bstr_t(L"Hello World");
Dlaczego Myślę, że to jest złe: Wierzę, że _bstr_t(L"Hello World");
dzwoni do konstruktora dla _bstr_t
i tworzy tymczasową zmienną tymczasową tego typu. Ta tymczasowa zostanie automatycznie usunięta, a jej przestrzeń tekstowa zwolniona, natychmiast po tym wierszu kodu (po punkcie z średnikiem).
To sprawi, że someString
wskaże pamięć, która została zwolniona.
Pytania:
Jaki jest właściwy termin dla tego połączenia z konstruktorem?
Czy możesz wskazać odniesienia/terminy/strony opisujące szczegółowo zastosowanie?
Czy istnieje termin dla tymczasowego obiektu _bstr_t
?
Chyba nazwałbym to "anonimową zmienną tymczasową", ale nie wiem, czy jest to technicznie poprawne.
(lub może jestem całkowicie błędne w mojej analizie .... jeśli tak, to chciałbym wiedzieć)
Dla wyjaśnienia:
_bstr_t is a C++ class, powszechnie używane przez Microsoft do zawijania ich typu BSTR, więc ma konstruktory/destruktory/operatory, itp.
BSTR
jest typedef dla tylko WCHAR*
, więc nie ma żadnej logiki. To tylko głupia wskazówka.
Dzięki, termin * "konstruktor konwersji" * jest tym, czego szukałem. – abelenky