Użycie konstruktora kopiującego?

0

Jak używa się konstruktora kopiującego chodzi mi o to, że mam jeden obiekt klasy i chcę poprzez użycie konstruktora kopiującego który napisałem go użyć.

cUlamek::cUlamek(const cUlamek &abc)
{
	l = abc.l; // licznik
	m = abc.m; // mianownik

}


int main()
{


	cUlamek *pUlamek1;
	pUlamek1 = new cUlamek(1, 2);
	
    

	
	_getch();
}

I jak tu teraz użyć ten konstruktor z tym "pUlamek1" ??

Bo chciałem tak:


 pUlamek2 = new cUlamek(pUlamek1);
 pUlamek3 = new cUlamek(pUlamek1);

I za cholerkę nie działa.

Dobra w ten sposób:


cUlamek *pUlamek2;
pUlamek2 = new cUlamek(*pUlamek1);

  • teraz działa
0

*ulamek1

0

a wiesz, że jakbyś go w ogóle nie definiował to też by działało? google rule of zero

#include <iostream>
#include <memory>

struct A
{
    int x;

    int y;
};

int main()
{
    // wersja, którą ja bym napisał.
    auto a = std::make_unique<A>(A { 1, 2 });
    std::unique_ptr<A> b = std::make_unique<A>(*a.get());
    std::cout << b->x << " " << b->y;

    std::cout << std::endl;
    // wersja z new
    A* a1 = new A { 1, 2 };
    A* a2 = new A(*a1);
    std::cout << a2->x << " " << a2->y;

    delete a1;
    delete a2;
    
    return 0;
}

http://melpon.org/wandbox/permlink/TWtcYN3kWhVKnOw0

0

@gośćabc osobiście wolę korzystać z nowego feature C++11:

class cUlamek {
public:
    cUlamek() = default;

    … … …
};

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