Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ręczne wywoływanie konstruktora/destruktora.

Ostatnio zmodyfikowano 2010-01-01 15:26
Autor Wiadomość
aRusher
Temat założony przez niniejszego użytkownika
Ręczne wywoływanie konstruktora/destruktora.
» 2010-01-01 13:09:00
Dlaczego konstruktor/destruktor (zadeklarowany podobnie jak inne funkcje składowe klasy - w sekcji public) przy ręcznym wywoływaniu jest wywoływany w taki sposób:

obiekt_klasy.nazwa_klasy::nazwa_klasy();
lub
obiekt_klasy.nazwa_klasy::~nazwa_klasy();

a nie po prostu:
obiekt_klasy.nazwa_klasy();

czy też

obiekt_klasy.~nazwa_klasy();

Wiem, że takie ręczne wywołania są rzadkie, jednak zastanawia mnie to.
P-12615
Elaine
» 2010-01-01 13:59:09
Jawne wywołanie konstruktora to raczej
C/C++
char foo[ sizeof( sth ) ];
new( foo ) sth( 8, 11, "sześćset sześćdziesiąt sześć" );
natomiast z destruktorem można
C/C++
blah->~sth(); // albo qux.~sth()

...a nad { i } się nie zastanawiałeś? To jest dopiero nielogiczne :S
P-12618
aRusher
Temat założony przez niniejszego użytkownika
» 2010-01-01 15:14:10
Czyli jeszcze raz. Destruktor mogę wywoływać tak:

obiekt_klasy.nazwa_klasy::~nazwa_klasy();

i tak:

obiekt_klasy.~nazwa_klasy();

?

To ostatnie było ironią? Po prostu nie rozumiem dlaczego pisać więcej, skoro mniej jest poprawnie.
P-12621
Elaine
» 2010-01-01 15:26:53
Ironia? Ja? Coś ci się chyba pokręciło :)
P-12622
« 1 »
  Strona 1 z 1