( TCH | 2021. 03. 26., p – 10:16 )

A C-s verzióban ott az "if" a malloc után, a C++-osban pedig nincs "if" a new után.
Ott nincs, de valahol van, csak nem látszik. Most beszéltük meg, hogy valahol vizsgálnia kell, hogy kivétel keletkezett-e. A viszgálat C++-ban is megtörténik, csak nem látszik.
Ha azt a new operatort használod, ami exceptiont dob (ez a default amúgy), akkor muszáj exception kezelést használnod, igen. De ha nem azt használod, akkor meg nem. Van olyan new, ami null-lal tér vissza out_of_mem esetén. Kérdés mit értesz azon, hogy az obj ctora elszáll memóriahiány miatt. Ez ugye úgy működik, hogy először lefoglalja a memóriát, és ha az sikerült, akkor lefuttatja a ctor-t. De ha nem sikerült, akkor vissza fog térni null-lal (nothrow-s new. A throw-s new exceptiont dob akkor). Szóval ebben a tekintetben nem muszáj exception kezelést használnod. Itt megint csak az van, hogy választhatsz, a C++ megadja a lehetőségét. Ha nem akarsz, nem kell exceptionokat használni.
Tehát vagy megvizsgálom itt is NULL-ra, vagy belül a kivételkezelés vizsgálja meg, hogy sikerült-e a foglalás.
Ez alatt azt értettem, hogyha mondjuk egy object ctor-a allokálna egy másik memóriablokkot, de nem sikerül, akkor a C++ szépen lepusztítja a félkész objectet (mert ugye félbe kell hagyni a ctor-t, hiszen nem tud leinicalizálódni), és továbbdobja az exceptiont. Mindezt úgy, hogy nem kell külön kódot írnod, hogy a félkész object resource-ai szabaduljanak fel. Tehát nem az van, hogy neked kell kézzel vacakolni a helyzettel, hanem megoldja neked az egészet a C++ automatán (feltéve, amit már írtam, hogy a resource-ok allokálását RAII módon végzed, de ez eléggé alap manapság).
Oké, ezt én nem is vitattam, hogy C++-ban sokkal kényelmesebb megoldani, meg kevesebbet kell kódolni hozzá, én arról beszéltem, hogy C++-ban is lesz vizsgálat, tehát nem lehet gyorsabb a C-snél, akkor sem, ha nincs exception, hiszen azt le kell kezelnie, hogy volt-e exception, vagy sem, ami minimum egy vizsgálat és C-ben is ugyanannyi van, csak ott látszik az if.