#52979739 · 26 Jun 2018, 14:49 · · პროფილი · პირადი მიმოწერა · ჩატი
CODE | #include <iostream> #include <vector>
class Figure { int m_x, m_y; public: Figure() : m_x(0), m_y(0) {} virtual ~Figure() {} void setCoordinates(int x, int y) { m_x = x; m_y = y; } virtual void printFigureType() = 0; };
class Horse : public Figure { public: Horse() : Figure() {} void printFigureType() override { std::cout << "I`m Horse!" << std::endl; } };
class Queen: public Figure { public: Queen() : Figure() {} void printFigureType() override { std::cout << "I`m Queen!" << std::endl; } };
int main() { std::vector<Figure *> figures;
figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Horse); figures.push_back(new Queen);
for(auto & figure : figures) figure->printFigureType();
for(auto & figure : figures) delete figure;
return 0; }
|
ანუ აკეთებ Based კლასს და მანდ გაგაქ ის ფუნქციონალი რაც ყველა ობიექტისთვისს იქნება ერთიანი (მაგალითად კოორდინატების დასეტვა), განსხვავებულ ფუნქციონალს გადატვირთავ ვირტუალურ ფუნქციებში. გამოყენება: ქმნი მშობელზე პოინტერების მასივს, ავსებ ობიექტებით და ვირტუალიზმის მექანიზმი გაძლევს საშუალებას მშობელი კლასის ვირტუალური ფუნქციის გამოძახებით გამოიძახო იმ კლასის ფუნქცია რა კლასის ობიექტიც არის სინამდვილეში.
This post has been edited by Thunder92 on 26 Jun 2018, 14:51
|