Przykład klasa dynamicznie alokująca pamięć (wielomian)

#include <iostream>

class Wielomian {

double *wsp;

int rzad;

public:

Wielomian(unsigned int r=0);

~Wielomian();

Wielomian(const Wielomian &w);

Wielomian operator= (const Wielomian &w);

void fill(double val);

void set(int n, double val);

friend std::ostream & operator<<(std::ostream &stream, const Wielomian &w);

};

std::ostream & operator<<(std::ostream &stream, const Wielomian &w) {

for (int i=0; i< w.rzad; i++)

stream << w.wsp[i] << ", ";

return stream;

}

void Wielomian::fill(double val) {

std::fill(wsp, wsp+rzad, val);

}

void Wielomian::set(int n, double val) {

if (n<rzad)

wsp[n] = val;

}

Wielomian::Wielomian(unsigned int r) {

wsp = new double[r];

if (wsp)

rzad = r;

}

Wielomian::~Wielomian() {

if (wsp)

delete [] wsp;

}

Wielomian::Wielomian(const Wielomian &w) {

wsp = new double[w.rzad];

std::copy(w.wsp, w.wsp+w.rzad, wsp);

rzad = w.rzad;

}

Wielomian Wielomian::operator= (const Wielomian &w) {

if (&w == this)

return *this;

// alokujemy nowe zasoby

double *tmp;

tmp = new double[rzad];

// kopiujemy

std::copy(w.wsp, w.wsp + w.rzad, tmp);

// zwalniamy pami��

delete [] wsp;

// "podpinamy" now� tablic� do naszego obiektu

rzad = w.rzad;

wsp = tmp;

return *this;

}

int main() {

Wielomian w1(3);

Wielomian w2 = w1;

std::cout << w1 << std::endl;

std::cout << w2 << std::endl;

w1.fill(1);

w2.set(1,2);

std::cout << w1 << std::endl;

std::cout << w2 << std::endl;

std::cout << "---------------\n";

Wielomian w3(3);

std::cout << w1 << std::endl;

std::cout << w3 << std::endl;

w3 = w1;

w1.set(0,0);

std::cout << w1 << std::endl;

std::cout << w3 << std::endl;

return 0;

}


Wyszukiwarka

Podobne podstrony:
10 Dynamiczne przydzielanie pamieci
10 Dynamiczna alokacja pamiecii Nieznany (2)
Konstrukcje metalowe 1 Przykl Klasa przekroju id 246323
FiR-przykladowe zadania z dynamiki i korelacji, Finanse i rachunkowość, 3 semestr, statystyka
198 ZUCH PRZYKLAD KLASA 1
Dynamiczne zarządzanie pamięcią new i delete, Programowanie, wykłady C++
198 ZUCH PRZYKLAD KLASA 2
automaty sprawko Czwórniki bierne RLC jako przykłady członów dynamicznych 1
Przyklad Ukladu Dynamicznego p1
198 ZUCH PRZYKLAD KLASA 2
Konstrukcje metalowe 1 Przyklad 5 Klasa przekroju
2 IMIR przyklady dynamikaid 203 Nieznany (2)

więcej podobnych podstron