Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Private copy constructor u apstraktnoj klasi

[es] :: C/C++ programiranje :: Private copy constructor u apstraktnoj klasi

[ Pregleda: 1357 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Private copy constructor u apstraktnoj klasi20.06.2013. u 18:44 - pre 132 meseci
Radio sam sa clone() funkcijom za kopiranje polimorfnih klasa i tu mi je skoro sve jasno. Skoro sam citao neki clanak i tu je spomenuto da bi dobro dizajnirana apstraktna klasa trebala da ima PRIVATE copy constructor. Do sada sam uvek pravio copy constructor apstraktne klase kao public jer nisam mnogo brinuo o tome.

Evo koda pa da objasnim sta mi nije jasno.

Code:


class Base
{
public:
    Base() {}

    virtual Base* clone() const = 0;
protected:                                            // !!! Mora biti protected da bi derived klasa pristupila copy constructor-u bazne klase da bi se ceo objekat konstruisao
    Base(const Base& rhs)
    {
        baseData = rhs.baseData;
    }
private:
    int baseData;
};

class Derived : public Base
{
public:
    Derived(){}
    Derived(const Derived& rhs)
        : Base(rhs)                                    // !!! Pozivanje baznog konstruktora
    {
        derivedData = rhs.derivedData;
    }

    Base* clone() const                            // !!! Kopiranje objekta
    {
        Base* pClone = new Derived(*this);
        return pClone;
    }
private:
    int derivedData;
};



Ovo lepo radi jedino sto protivreci dizajnu o kojem sam citao na nekoliko mesta ali nisam mogao da nadjem objasnjenje zasto spominju da treba biti private ( a ne protected ).

Jedino ako ne misle da treba da bude private u slucaju da abstract klasa nema podataka...?

EOF
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2790 Profil

icon Re: Private copy constructor u apstraktnoj klasi20.06.2013. u 22:20 - pre 132 meseci
Konstruktor kopije se definiše kao privatan kada se želi zabranjivanje kopiranja objekata tog tipa. Poenta je da konstruktor kopije i operator dodele budu privatni, a da ti onaj copy() metod služi za pravljenje kopija, jer se on ponaša polimorfno.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Private copy constructor u apstraktnoj klasi

[ Pregleda: 1357 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.