OOP se vzdyt dela v Jave. C++ je jen nepovedeny hack. Vzdyt i samotny kernel je psan radeji v cistem C.
Presne tak, jestli C++ opravdu nutne nepotrebujes, utec dokud je cas. Timhle
For(int i = 0; i<10; i++)
someVector.push_back( Trida() )
uz si potencialne zadelavas na segmentation fault, kdyz se treba budes pokouset pristupovat k polozkam toho vektoru mimo kontext kde vznikly. Techto oseru je C++ plne. Jestli potrebujes neco podobneho C++, ale done right, zkus radsi Rust, obzvlast kdyz mas svobodu teprve si vybirat.
Ale prd, radsi se priste koukni do dokumentace, kdyz necemu nerozumis.
Parametr funkce je sice reference, ale segmentation fault to nehodi. Nejdriv se vytvori objekt tridy Trida na stacku, pak se zavola push_back a preda se mu reference na ten objekt, metoda push_back vytvori kopii toho objektu pomoci copy constructoru (popr. v C++11 je parametr rvalue reference a tam se obsah objektu muze presunout bez kopie pomoci move constructoru) a po volani push_back se muze ten objekt ze stacku odstranit.
Jak se alokuji samotne objekty ve vektoru se urcuje allocatorem, ktery se nastavuje jako parametr sablony tridy vector.
Defaultni je pomoci fce new, takze po smycce for budou ve vektoru objekty alokovane z heapu a je ti jedno jestli tam sahnes mimo "kontext kde vznikly".
Bordel by to delalo jedine, kdyz by to byl vector<Trida&> misto vector<Trida>, ale predpokladam ze bez spravneho duvodu to tazatel delat nebude.