Konstruktor kopiujący z argumentem z przydomkiem const

0
#include <iostream>
#include <string>
using namespace std;

class Punkt
{
    int x,y;

public:
    Punkt()
    {
        x = 1;
        y = 2;
    }

    Punkt(int xx, int yy)
    {
        this->x = xx;
        this->y = yy;
    }

     Punkt(const Punkt &p)
    {
        this->x = p.x;
        this->y = p.y;
    }
};

class Linia
{
    Punkt p1,p2;

public:
    Linia(Punkt a, Punkt b)
    {
        p1 = a;
        p2 = b;
    }

    Linia(const Linia &l)
    {
        this->p1 = l.p1;
        this->p2 = l.p2;
    }

};

int main()
{
    Punkt pierwszy(2,2);
    Punkt drugi(3,3);

    const Linia prosta(pierwszy,drugi);

    Linia druga = prosta;

    return 0;
}
 

Czy dobrze to napisałem ? Chciałem sprawdzić czy konstruktor kopiujący zadziała dla obiektu const. W tym przypadku w klasie Linia jak i Punkt trzeba stworzyć konstruktor kopiujący z przydomkiem const dla obiektu.

0

Nie do końca zrozumiałem pytanie, ale generalnie jak dodasz wypisywanie w konstruktorach to zobaczysz, że

const Linia prosta(pierwszy,drugi);

tu się wywołuje konstruktor

Linia druga = prosta;

a tu się wywołuje konstruktor kopiujący.

0

jest ok, tyle że te konstruktory kopiujące nie są w przypadku tych klas tak naprawdę potrzebne, bo wygenerowane automatycznie przez kompilator wystarczą.

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