Velmi zajímavý nápad.
Napadá mě nicméně:
1) Vzhledem k tomu, že je stejně třeba volat pro konstrukci objektu zvláštní verzi operator new(size_t sz, IRuntimeAllocator &a), pak ůže stejně dobře posloužit např. template T * Create(IRuntimeAllocator &a). Pokud bude fce Create napsaná s oddělením alokace a konstrukce objektu T (viz STL), tak není třeba aby všechny třídy poskytovali rozhraní class DynObject, takže celý přístup bude rovněž (zpětně) kompatibilní s externími typy.
2) Co se týká alokátorů v STL tak na nich opravdu nic "zmršeného" nevidím. Pokud už je (výjimečně) opravdu potřeba, aby byl objekt (de)alokován určitou konkrétní instancí alokátoru, pak může být tato (resp. reference na ni) uložena unvnitř Objektu - čímž se vracíme tak trochu zpět k rozhraní DynObject a přicházíme tak o zpětnou / externí kompatibilitu - nebo v mapě Objekt_pointer-Allokator_reference - čímž vzniká určitá režie při (de)alokaci.
p.s.: co se týče tématu "Alokátory a operator new v C++" tak bych osobně spíš normě vytknul, že šla "rozštěpenou" cestou obou přístupů zároveň a ještě k tomu umožnila přetěžovat new jako členskou třídu. Vzniká tak trochu bordel a v podstatě člověk nikdy neví, co externí objekt vlastně dělá při svojí dyn. alokaci. Osobně bych dal naopak přednost pouze objektu Allokator a operatory new a delete vůbec nezaváděl :)
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 51 087×
Přečteno 23 957×
Přečteno 22 882×
Přečteno 20 967×
Přečteno 17 768×