/
AirLexa
/
07
Обзор
Документация
Войти
/
AirLexa
/
07
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_02/Task_1/Task_1.cpp
88 строк
2 KB
AirLexa
урок 2
24 июн 2026, 15:40
Верифицирован
24 июн 2026, 15:40
02f1193
Код
Авторство
О чём код?
#include <string> #include <iostream> class Text { public: virtual void render(const std::string& data) const { std::cout << data; } }; class DecoratedText : public Text { public: explicit DecoratedText(Text* text) : text_(text) {} Text* text_; }; class ItalicText : public DecoratedText { public: explicit ItalicText(Text* text) : DecoratedText(text) {} void render(const std::string& data) const { std::cout << "<i>"; text_->render(data); std::cout << "</i>"; } }; class BoldText : public DecoratedText { public: explicit BoldText(Text* text) : DecoratedText(text) {} void render(const std::string& data) const { std::cout << "<b>"; text_->render(data); std::cout << "</b>"; } }; class Paragraph : public DecoratedText { public: explicit Paragraph(Text* text) : DecoratedText(text) {} void render(const std::string& data) const { std::cout << "<p>"; text_->render(data); std::cout << "</p>"; } }; class Reversed : public DecoratedText { public: explicit Reversed(Text* text) : DecoratedText(text) {} void render(const std::string& data) const { text_->render(std::string(data.rbegin(), data.rend())); } }; class Link : public DecoratedText { public: explicit Link(Text* text) : DecoratedText(text) {} using Text::render; void render(const std::string& data, const std::string& data_2) const { std::cout << "<a href="; text_->render(data); std::cout << ">"; text_->render(data_2); std::cout << "</a>"; } }; int main() { auto text_block1 = new ItalicText(new BoldText(new Text())); text_block1->render("Hello world"); std::cout << std::endl; auto text_block2 = new Paragraph(new Text()); text_block2->render("Hello world"); std::cout << std::endl; auto text_block3 = new Reversed(new Text()); text_block3->render("Hello world"); std::cout << std::endl; auto text_block4 = new Link(new Text()); text_block4->render("netology.ru", "Hello world"); std::cout << std::endl; return 0; }