Konstruktor kopiujący i dynamiczna alokacja

0

Hej chłopaki:)
Mam napisać na uczelnie taki program:

Opis programu:
Program jest napisany technika obiektowa.
Program posiada klasę, dwa konstruktory oraz destruktor. Pierwszy konstruktor ma za zadanie
stworzyc dynamicznie tablice liczb calkowitych nastepnie wypelnic ja wartosciami i wypisac na ekranie.
Drugi konstruktor jest konstruktorem kopiujacym, ktory ma za zadanie przekopiowac wartosc poprzedniego
obiektu klsy DYNAMIC do innego EXP.

Wykonałam to w taki sposób:

#include <iostream>
using namespace std;

class dynamic
{
  private:
        int sk_jed;

  public:
        dynamic(int dana); // zwyczajny konstruktor
        dynamic(dynamic&exp); // konstruktor kopiujacy
        void wyswietl(); // zwyczajna funkcja skladowa
        ~dynamic(); // destruktor
};
//////////////////////////////////////////////////////////////////
/*Definicje funkcji skladowych: */
dynamic::dynamic(int dana)
{
    int *wsk;
    sk_jed = dana;

    //wypelnienie tablicy
    for(int i = 0; i < dana; i++)
    {
       wsk = new int[i];
       *wsk = dana;

    }


}

void dynamic::wyswietl()
{
    for(int i = 0; i < sk_jed; i++)
    cout << "[" << i << "] " ; // taka sama sytuacja jak wczesniej wiec klamry niepotrzebne
    cout << endl; // zeby bylo czytelniej przy wyswietleniu...
}
dynamic::~dynamic()
{
    cout << endl; //dla czytelnosci po wyswietleniu...
    cout << "::Dziala destruktor::" << endl; // endl ponownie dla czytelnosci po wyswietleniu...
}

dynamic::dynamic(dynamic&exp) // definicja konstruktora kopiujacego jak widac "nic" skomplikowanego
{
    sk_jed = exp.sk_jed;

}

///////////////////////////////////////////////////////////////////////////
int main()
{
    int rozmiar;
std::cout << "Podaj rozmiar tablicy:\n "; cout << ">> ";
cin >> rozmiar;

cout << "Rozmiar, ktory podales to: " << rozmiar << endl;
cout << "::Przystepuje do konstruowania tablicy::" << endl << endl;
dynamic tablica(rozmiar);
dynamic exp(tablica);
cout << ":::Tablica zostala poprawnie skonstruowana, wyswietlam:::" << endl << endl;
tablica.wyswietl();
cout << "\n\n";
cout << "::Program przystepuje do tworzenia kopii obiektu\n przy pomocy konstruktora kopiujacego::\n" << endl;
exp.wyswietl();




}
 

Program działa ale nie wiem czy to dobrze zrobiłam tzn czy poprawnie bo kompilator na ideone z C++11 wywala błąd.. natomiast zwykły nie i męczy mnie to troszkę :(
Pomożecie?

0

Tak swoją drogą to ten program jest bez sensu, zupełnie nie zrozumiałeś problemu. Nie kompromituj się próbą oddania czegoś takiego.

0

Ten program miał być po to, żebyś przećwiczyli konstruktory (kopiujący też) więc dlaczego bez sensu? Robi przecież to, co ma robic... :(

0

Poprawiłam. Według polecenia konstruktor powinien wyglądać tak:

 dynamic::dynamic(int dana)
{
    int *wsk;
    sk_jed = dana;
    wsk = new int[dana];
    //wypelnienie tablicy
    for(int i = 0; i < dana; i++)
    {
       wsk[i] = i;


    }


}

Ja po prostu miałam tak ale potem coś chciałam przestestować i tak wyszło.

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