0.0 particularitatile programarii с++

  • Published on
    16-Jan-2017

  • View
    3.133

  • Download
    5

Embed Size (px)

Transcript

<p> ++</p> <p>Particularitile elaborrii aplicaiilor C++Croitor Mihail</p> <p>CuprinsPointer la funcieMotenireFuncii virtualePolimorfism n baza funciilor virtualeClase abstracteRedefinire operatorilorObiecte funcionaleabloanePolimorfism staticSpecializare abloanelorUnele particulariti ale standardului C++11</p> <p>Pointer la funciePointer la funcie este un pointer, care conine adresa punctului de ntrare n aceast funcie.Declararea variabilei-pointer la funcie:void (*pfunc)(double*, const size_t);Declararea tipului pointer la funcie:typedef void (*pfunc_t)(double*, const size_t);</p> <p>Pointer la funcie: exemplu#include typedef void(*event_t)(void*,void*);structButton{ size_tx, y, width, height; chartext[255]; event_t OnClick;};voidButtonPressed(void*/*sender*/,void*/*arg*/){ puts("button pressed!");}intmain(){ Button btn = {5,5,75,30,"Press Me!", ButtonPressed}; btn.OnClick(); return0;}</p> <p>MotenireMotenirea este un mecanism, care permite descrierea clasei noi (clasa copil, clasa derivat) n baza unei clase existente (clasa de baz, clasa printe) cu pstrarea funcionalitii clasei de baz.</p> <p>Motenirea permite manipularea cu obiecte de clasa derivata ca cu obiecte clasei de baz. </p> <p>Pointer la obiectul clasei de baz poate referi la obiectul clasei derivate. Afirmaie invers este greit.</p> <p>class Base {int value;public:Base(): value(0){}int getValue() { return value; }};</p> <p>class Derived: public Base{public:Derived() : Base() {}void setValue(int data) { value = data; }};Exemplu motenirii:</p> <p>Motenire: exempluclass Entity{protected:std::string name;Entity* parent;public:virtual std::string ToString() const = 0;Entity* GetParent() const{ return parent; }};</p> <p>class Folder: public Entity{std::list childs;public:Folder(std::string n, Entity* p): name(n), parent(p){}std::string ToString() const { return name; }};</p> <p>Funcii virtualeFuncie virtual a clasei este o metod, care poate fi redefinit n clasa copil i n dependena de situaie se determin n timpul executrii aplicaiei care realizarea concret a funciei va fi apelat.</p> <p>Polimorfismul n baza funciilor virtuale se numeste polimorfism dinamic. Aceast proprietate printre altele permite invocarea unei i aceleiai funciei (fr redeclararea/redefinirea) cu parametrii actuali de diferite tipuri.class Base{public: Base(): value(0){} virtual void show() { std::cout </p>