dasdfaqwerdf

Page 73

Classe Clonable Clonable é uma classe abstracta. Tem apenas a função Clone, declarada virtual pura: A função Clone criará namespace namespacemas mas{{ dinamicamente um objecto igual class classClonable Clonable{{ public: ao objecto para o qual é public: virtual Clonable* Clone() const = 0; virtual Clonable* Clone() const = 0; virtual chamada, do mesmo tipo, e virtual~Clonable() ~Clonable(){}; {}; }; }; retorna um apontador para esse }} novo objecto. A classe StringBasic implementa a função Clone: As funções Clone são sempre Clonable* StringBasic::Clone() const Clonable* StringBasic::Clone() const {{ programadas assim, com return new StringBasic(*this); recurso ao construtor de cópia. }} return new StringBasic(*this); 2003-07-19

Curso de Programação com C++ © Pedro Guerreiro 2003

145

Classe StringBasic: cópia, afectação class classStringBasic: StringBasic:public publicClonable Clonable{{ //... //... virtual virtualvoid voidCopy(const Copy(constStringBasic& StringBasic&other); other); virtual StringBasic& operator = (const virtual StringBasic& operator = (constStringBasic& StringBasic&other); other); virtual void SwapOut(StringBasic& other); virtual void SwapOut(StringBasic& other); virtual virtualvoid voidCopySwap(const CopySwap(constStringBasic& StringBasic&other); other); virtual virtualvoid voidSet(const Set(constStringBasic& StringBasic&other); other); virtual void Set(const StringBasic& other, virtual void Set(const StringBasic& other,int intstartPos, startPos,int intendPos); endPos); // pre other.ValidRange(startPos, // pre other.ValidRange(startPos,endPos); endPos); }; };

Todas estas funções copiam o argumento para o objecto, usando técnicas diversas. A afectação é uma cópia que devolve uma referência para o objecto. 2003-07-19

Curso de Programação com C++ © Pedro Guerreiro 2003

146


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.