operator new, nietypowe i niezrozumiałe zastosowanie

0
OBIEKT* obj = reinterpret_cast<OBIEKT*> ( ::operator new (sizeof(OBIEKT)) );
oraz
OBIEKT* obj = static_cast<OBIEKT*> ( ::operator new (sizeof(OBIEKT)) );
  new(obj+3) OBIEKT;

Nie rozumiem wymowy tego czegoś. Nigdy w ten sposób nie stosowałem operatora new. W ogóle raz pojawia się tutaj reinterpret_cast, a raz static_cast.

1
::operator new (sizeof(OBIEKT)) 

To jest po prostu alokacja na stercie obszaru pamięci o zadanym rozmiarze. Generalnie taki malloc w C++. Bo zwykłe wywowanie new / new[] powoduje tworzenie obiektów (wołanie konstruktorów). A może ktoś chce mieć tylko blok pamięci żeby sie potem bawić w jakieś placement new?

static_cast wymaga żeby istniała jakaś "logika" rzutowanie w trakcie kompilacji, tzn na przykład odpowiednia hierarchia dziedziczenia. reinterpret_cast rzutuje nie przejmując się niczym.

0

dobrze, w naszym wypadku obydwa rzutowania będę prawidłowe.
Dzięki :)

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