Wywoływanie konstruktora klasy

0

Witam. Wiem że aby utworzyć obiekt klasy wystarczy:
class A;
A myA;
A takie coś nie tworzy obiektu znaczy się tworzy ale jest on Od razu niszczony :
A()
Aby na stercie stworzyć obiekt robi się tak:
A *myA = new A;
OK, ale co dzieje się w takiej sytuacji:
A *myA = new A();
???

0

Te dwa przykłady ze sterty są w zasadzie tożsame. Ten drugi służy częściej do tego żeby przekazywać argumenty konstruktora jeśli jakieś są.

0

Ja się na C++ jakoś specjalnie nie znam, ale Wikipedia mówi: http://pl.wikipedia.org/wiki/Konstruktor_%28programowanie_obiektowe%29
MojaKlasa obiektMojejKlasy( 5 );

Wydaje mi się też, że new A i new A() to w zasadzie to samo, ponieważ w obu przypadkach wywołujesz konstruktor domyślny.

0
TenCoWSzkoleSiedzi napisał(a)

Aby na stercie stworzyć obiekt robi się tak:
A *myA = new A;
OK, ale co dzieje się w takiej sytuacji:
A *myA = new A();
???

marnujesz dwa bajty

0

Tak wiem,że jeżeli chcę stworzyć obiekt, który otrzymuje jakiś parametr to muszę przekazać do konstruktora parametry, może zobrazuje to trochę jaśniej:

 
class A
{
A() {x=5}
A(int ax;): x(ax) {}
int x;
}:
int main()
{
A stosA;               //tworzy obiekt na stosie wywołując konstruktor A()
A stos2A(5);          //tworzy obiekt na stosie wywołując konstruktor A(int)
A stosA();              // co robi???????????????
A();                      // tworzy obiekt i zwraca go ale jest on niszczony bo nie został nigdzie przypisany
A(5);                     // jak wyżej
A *stertaA = new A;//tworzy obiekt na stercie wywołując konstruktor A() i zwraca do niego wskaźnik 
A *sterta2A = new A(6);//jak wyżej ale zostaje wywołany konstruktor A(int);
A *sterta2A = new A()// co robi?????????????????????

Shalon mógłbyś to opisać trochę szczegółowiej, chciałbym to zrozumieć :)

0

A może po porostu skompilujesz i sprawdzisz?

0

No skompilowałem i
A stosA()
się nie chce skompilować, reszta tak, więc pewnie tak jak było napisane
A myA = new A
A
myA = new A()
wykonują tą samą czynność.

0

A teraz pomyśl jak wyglądałaby deklaracja funkcji o nazwie stosA która zwraca obiekt A.

1 użytkowników online, w tym zalogowanych: 0, gości: 1