• 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
232 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ź 598 wizyt
pytanie zadane 3 listopada 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
+1 głos
1 odpowiedź 536 wizyt
pytanie zadane 19 czerwca 2021 w C i C++ przez wndtcw Nowicjusz (130 p.)
+1 głos
2 odpowiedzi 293 wizyt
pytanie zadane 14 czerwca 2021 w C# przez everstudybee Użytkownik (610 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...