konstruktor kopiujacy

0

Witam moglby mi ktos nzalezc tutaj blad? Wyglada jakby ta druga tablica nie miala adresu.

#include <iostream>

using namespace std;

class Kopiowanie
{
public:
	int x, y;
	int *tab;
	int ile;

	Kopiowanie(int a = 0, int b = 0, int ile = 10) : x(a), y(b), tab(new int[ile])
	{
		cout << "Tworze obiekt o adresie: " << this << endl;
	}

	~Kopiowanie()
	{
		cout << "Niszcze obiekt o adresie: " << this << endl;
		delete[] tab;
	}

	Kopiowanie(Kopiowanie & kkk)
	{
		cout << "Tworze obiekt o adresie: " << this << endl;
		kkk.x = x;
		kkk.y = y;
		kkk.tab = new int[ile];
	}
};

int main()
{
	Kopiowanie jeden;

	Kopiowanie dwa(jeden);

	//jeden.tab[0] = 88;
	//dwa.tab[0] = 99;

	cout << jeden.tab << endl << dwa.tab << endl;



	system("pause");
}
0

Zły kierunek kopiowania.

Kopiowanie(const Kopiowanie& rhs)
{
    x = rhs.x;
    y = rhs.y;
    ...
}
0

Jeszcze jakis bład przy zwalnianiu pamieci wywala

0
#include <iostream>

using namespace std;

class Kopiowanie
{
public:
	int x, y;
	int *tab;
	int ile;

	Kopiowanie(int a = 0, int b = 0, int ile = 10) : x(a), y(b), tab(new int[ile])
	{
		cout << "Tworze obiekt o adresie: " << this << endl;
	}

	~Kopiowanie()
	{
		cout << "Niszcze obiekt o adresie: " << this << endl;
		delete[] tab;
	}

	Kopiowanie(Kopiowanie & kkk)
	{
		cout << "Tworze obiekt o adresie: " << this << endl;
		x = kkk.x;
		y = kkk.y;
		tab = new int[kkk.ile];
	}


};

int main()
{
	Kopiowanie jeden;

	Kopiowanie dwa(jeden);


	jeden.tab[0] = 88;
	dwa.tab[0] = 99;
	cout << jeden.tab[0] << endl << dwa.tab[0] << endl;



	system("pause");
}
0

Jak masz błąd to wklej go tu razem z linijką kodu, której dotyczy. Wróżkami nie jesteśmy.

0

Ok, juz znalazlem, nie zainicjowalem 'ile' w tym pierwszym konstruktorze

0

te zmienne powinny być prywatne.

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