Portál AbcLinuxu, 12. května 2025 07:28
MyClass a(parametry);
MyClass *a = MyClass(parametry);
new
:
MyClass *a = new MyClass(parametry);Rozdíl je v typu,
*a
je ukazatel. Volání konstruktoru je však stejné.
a
(tj. třída) lokální proměnná, která nepřežije návrat z funkce. Ve druhém je a
(pointer) lokální proměnná, ale samotná třída bude nadále existovat, dokud ji nezrušíte pomocí delete
(a můžete pointer nebo referenci na ni použít i jako návratovou hodnotu).
MyClass a(parametry);je ekvivalentní
MyClass a = MyClass(parametry);i když má třída definován konstruktor bez parametrů a operátor přiřazení. Na druhou stranu, ten druhý zápis bych stejně nikdy nepoužil…
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.