• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

klasa jako wskaźnik do innej klasy + przeciążenie operatora

VPS Starter Arubacloud
0 głosów
251 wizyt
pytanie zadane 14 marca 2020 w C i C++ przez Damianek Obywatel (1,020 p.)

Cześć Forumowicze, czy może mi ktoś dokładnie powiedzieć co się tak naprawdę dzieje, że za pomocą klasy wskaźnika mogę tworzyć nowy obiekt klasy na jaką ma wskazywać?

chodzi dokładnie o działanie konstruktora klasy ptrPlane, a także przeciążenia operatorów. Wiem, że tak ma być ale jakoś nie ogarniam całkowicie jak to działa.

#include <iostream>

using namespace std;

class Plane {

public:

    int a;
    double b;
    float c;

    Plane () {cout << "Konstruktor Plane" << endl;};
    ~Plane () {cout << "Destruktor Plane" << endl;};


};

class ptrPlane {

public:

    Plane* pPlane;

    ptrPlane (Plane* nP) : pPlane(nP) {cout << "Konstruktor ptrPlane" << endl;};
    ~ptrPlane () {cout << "Destruktor ptrPlane" << endl; delete pPlane;};

    Plane* operator-> () {return pPlane;};
    Plane& operator* () {return *pPlane;};

};



int main () {

setlocale(LC_ALL, "");

ptrPlane pBoeing = new Plane ();

pBoeing->a = 100;

cout << pBoeing->a << endl;



return 0;

}

 

1 odpowiedź

0 głosów
odpowiedź 15 marca 2020 przez Michałełe Nałogowiec (25,600 p.)

Witam

ptrPlane (Plane* nP) : pPlane(nP) {cout << "Konstruktor ptrPlane" << endl;};

To co się dzieje po nazwie konstruktora to lista inicjalizacyjna - inaczej mógłbyś to zapisać tak, działałoby dokładnie tak samo:

ptrPlane (Plane* nP) { 
  this->pPlane = Np;
  cout << "Konstruktor ptrPlane" << endl;
};

Co do przeciążeń operatorów to odpalają się one, za każdym razem gdy na obiekcie klasy ptrPlane ich użyjesz

	Plane* operator-> () { return pPlane; };

Czyli każdym razem gdy na wskaźniku użyjesz -> to zwróci ten zapis wskaźnik na obiekt klasy Plane

	Plane& operator* () { return *pPlane; };

Za każdym razem gdy będziesz próbował dokonać dereferencji na obiekcie to te przeładowanie zwróci dereferencje obiektu pPlane.

Podobne pytania

0 głosów
1 odpowiedź 901 wizyt
pytanie zadane 3 listopada 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
+1 głos
1 odpowiedź 710 wizyt
pytanie zadane 19 czerwca 2021 w C i C++ przez wndtcw Nowicjusz (130 p.)
+1 głos
2 odpowiedzi 368 wizyt
pytanie zadane 14 czerwca 2021 w C# przez everstudybee Użytkownik (670 p.)

93,032 zapytań

141,996 odpowiedzi

321,300 komentarzy

62,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...