Portál AbcLinuxu, 12. května 2025 07:28

Dotaz: volání konstruktoru v C++

4.12.2005 21:25 jan martinec
volání konstruktoru v C++
Přečteno: 508×
Odpovědět | Admin
Zdravím, je nějaký (případně jaký?) rozdíl mezi těmito voláními konstruktorů?

MyClass a(parametry);
MyClass *a = MyClass(parametry);


Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.12.2005 21:31 #Tom
Rozbalit Rozbalit vše Re: volání konstruktoru v C++
Odpovědět | | Sbalit | Link | Blokovat | Admin
V tom druhém chybí operátor new:
MyClass *a = new MyClass(parametry);
Rozdíl je v typu, *a je ukazatel. Volání konstruktoru je však stejné.
4.12.2005 22:19 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: volání konstruktoru v C++
Rozdíl je v tom, že v prvním případě 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).
4.12.2005 22:28 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: volání konstruktoru v C++
Trochu překvapivé ale je, že
  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…

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.