02.11.2014 Views

Proceduralni jezici - FESB

Proceduralni jezici - FESB

Proceduralni jezici - FESB

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

U C++ postoji problem plitkog i dubokog kopiranja, koji se rješava tako da korisnik sam definira operator pridjele<br />

vrijednosti. Ortodoksni kanonički oblik klase u C++ zahtijeva da se definira a) konstruktor, b) destruktor, c) operator = i d)<br />

kopirni konstruktor:<br />

#include <br />

class Point {<br />

public:<br />

int dimensions;<br />

float *coordinates;<br />

Point (int d = 2) {<br />

dimensions = d;<br />

coordinates = new float[d];<br />

}<br />

~Point() {delete [] coordinates;}<br />

// mora se definirati za dinamički<br />

// alocirane članove<br />

Point &operator =(Point &p) {<br />

if(this == &p) return *this;<br />

if(p.dimensions != dimensions) {<br />

delete [] coordinates;<br />

coordinates = new float[p.dimensions];<br />

}<br />

for(int i=0; icoordinates[i]=i;<br />

plane = solid; //OK in if operator = defined<br />

// but plane is now 3d point<br />

for (i=0; idimensions; i++)<br />

std::cout coordinates[i]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!