<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763427</guid>
        <pubDate>Sun, 11 Mar 2018 17:10:33 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763427</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412257&view=findpost&p=3763382'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2018-03-11T13:54:50+03:00">11.03.18, 10:54</time></span><div class='quote '>ы как-то вяло знакомишься с Rust</div></div><br>
Еще раз - пасип. Да. Есть такое - вяло, мотивации немного недостаточно.]]></description>
        <author>JoeUser</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763382</guid>
        <pubDate>Sun, 11 Mar 2018 10:54:50 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763382</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412257&view=findpost&p=3763349'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-03-11T07:04:00+00:00">11.03.18, 07:04</time></span><div class='quote '>если я не ошибаюсь - в ваших кодах, в конце, заполнение вектора идет путем инициализации при объявлении. А нужно было добавлением.</div></div><br>
Это не относилось к вопросу, сделал так как было в примерах в статьях. Ты как-то вяло знакомишься с Rust, мог бы легко сам <a class='tag-url' href='https://doc.rust-lang.org/std/vec/struct.Vec.html' target='_blank'>нагуглить</a>.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">...</div><div class="code_line">use std::boxed::Box;</div><div class="code_line">use std::vec::Vec;</div><div class="code_line">&nbsp;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">fn main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;use figures::{Figure, Rectangle, Square, Ellipse};</div><div class="code_line">&nbsp;&nbsp; &nbsp;let mut v: Vec&#60;Box&#60;Figure&#62;&#62; = Vec::with_capacity(4);</div><div class="code_line">&nbsp;&nbsp; &nbsp;v.push(Box::new(Rectangle::new(2.0, 3.0)));</div><div class="code_line">&nbsp;&nbsp; &nbsp;v.push(Box::new(Square::new(4.0)));</div><div class="code_line">&nbsp;&nbsp; &nbsp;v.push(Box::new(Ellipse::new(2.0, 3.0)));</div><div class="code_line">&nbsp;&nbsp; &nbsp;for i in &amp;v {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;i.printName();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;println!(&quot;, area: {}&quot;, i.area());</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
— <a class='tag-url' href='https://ideone.com/BGynKV' target='_blank'>https://ideone.com/BGynKV</a>]]></description>
        <author>korvin</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763349</guid>
        <pubDate>Sun, 11 Mar 2018 07:04:00 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763349</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>korvin</strong>, <strong class='tag-b'>OpenGL</strong>, если я не ошибаюсь - в ваших кодах, в конце, заполнение вектора идет путем инициализации при объявлении. А нужно было добавлением. Но это так - мелочи. Просто маленькое несоответствие. Ваш вариант скорее всего бы соответствовал этому куску кода нс C++:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;std::vector&#60;Figure*&#62; V = {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new Rectangle(2,3),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new Square(4),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;new Ellipse(2,3)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;};</div></ol></div></div></div></div>]]></description>
        <author>JoeUser</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763324</guid>
        <pubDate>Sat, 10 Mar 2018 20:38:34 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763324</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412257&view=findpost&p=3763250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-03-10T11:26:02+00:00">10.03.18, 11:26</time></span><div class='quote '>Пока не пойму, как в Rust реализовать абстрактный класс, виртуальный метод, и как работать с перекрытием методов?</div></div><br>
Виртуальные методы делаются trait-ами, как в примере выше. Абстрактный класс сделать нельзя - trait содержит только методы, но не поля, т.е. они ближе к интерфейсам, чем к абстрактому классу. Динамический полиморфизм делается в точности как в плюсах - через указатель/ссылку на базу(trait). Например, если переписать пример <strong class='tag-b'>korvin</strong>-а со ссылок на указатели (класс Box - полный аналог std::unique_ptr из плюсов), то объявление массива v в main будет таким:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;let v: Vec&#60;Box&#60;Figure&#62;&#62; = vec![</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Box::new(Rectangle::new(2.0, 3.0)),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Box::new(Square::new(4.0)),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Box::new(Ellipse::new(2.0, 3.0)),</div><div class="code_line">&nbsp;&nbsp; &nbsp;];</div></ol></div></div></div></div>]]></description>
        <author>OpenGL</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763276</guid>
        <pubDate>Sat, 10 Mar 2018 14:34:21 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763276</link>
        <description><![CDATA[JoeUser: Ну не спорю - кросава&#33;  :lol:]]></description>
        <author>JoeUser</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763272</guid>
        <pubDate>Sat, 10 Mar 2018 14:12:26 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763272</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412257&view=findpost&p=3763271'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-03-10T14:04:02+00:00">10.03.18, 14:04</time></span><div class='quote '>Это после включения обучения обычно делается</div></div><br>
ХЗ, никакое обучение не проходил, раст видел только мельком, по статье и паре небольших статеек Rust by Example (чтобы синтаксические мелочи подсмотреть), слепил то что слепилось. =)]]></description>
        <author>korvin</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763271</guid>
        <pubDate>Sat, 10 Mar 2018 14:04:02 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763271</link>
        <description><![CDATA[JoeUser: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412257&view=findpost&p=3763268'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2018-03-10T13:56:50+00:00">10.03.18, 13:56</time></span><div class='quote '>Так включи воображение</div></div><br>
Это после включения обучения обычно делается  :lol:]]></description>
        <author>JoeUser</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763268</guid>
        <pubDate>Sat, 10 Mar 2018 13:56:50 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763268</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=412257&view=findpost&p=3763250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2018-03-10T11:26:02+00:00">10.03.18, 11:26</time></span><div class='quote '>Но увы, цельного примера я там не нашел, все расписывалось кусками.</div></div><br>
Так включи воображение и собери цельный пример. =) Ну <a class='tag-url' href='https://ideone.com/7qLtr6' target='_blank'>как-то так</a>, например:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">use std::io::stdin;</div><div class="code_line">use std::io::BufRead;</div><div class="code_line">use std::io::BufReader;</div><div class="code_line">&nbsp;</div><div class="code_line">mod figures {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pub trait Figure {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn area(&amp;self) -&#62; f64;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn printName(&amp;self) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;print!(&quot;Figure = {} &quot;, self.name());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn name(&amp;self) -&#62; &amp;&#39;static str;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pub struct Rectangle {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;w: f64,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;h: f64,</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;impl Rectangle {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pub fn new(width: f64, height: f64) -&#62; Rectangle {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Rectangle { w: width, h: height }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;impl Figure for Rectangle {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn name(&amp;self) -&#62; &amp;&#39;static str {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Rectangle&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn area(&amp;self) -&#62; f64 {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.h * self.w</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pub struct Square {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;rectangle: Rectangle,</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;impl Square {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pub fn new(size: f64) -&#62; Square {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Square { rectangle: Rectangle { w: size, h: size } }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;impl Figure for Square {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn name(&amp;self) -&#62; &amp;&#39;static str {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Square&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn area(&amp;self) -&#62; f64 {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.rectangle.area()</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pub struct Ellipse {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;rectangle: Rectangle,</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;impl Ellipse {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pub fn new(a: f64, b: f64) -&#62; Ellipse {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ellipse { rectangle: Rectangle { w: a, h: b } }</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;impl Figure for Ellipse {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn name(&amp;self) -&#62; &amp;&#39;static str {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;Ellipse&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fn area(&amp;self) -&#62; f64 {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.rectangle.area() * 3.1415</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">fn main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;use figures::{Figure, Rectangle, Square, Ellipse};</div><div class="code_line">&nbsp;&nbsp; &nbsp;let v: [&Figure; 3] = [</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;Rectangle::new(2.0, 3.0),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;Square::new(4.0),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;Ellipse::new(2.0, 3.0)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;];</div><div class="code_line">&nbsp;&nbsp; &nbsp;for i in v.iter() {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;i.printName();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;println!(&quot;, area: {}&quot;, i.area());</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>korvin</author>
        <category>Rust</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763250</guid>
        <pubDate>Sat, 10 Mar 2018 11:26:02 +0000</pubDate>
        <title>ООП на Rust</title>
        <link>https://forum.sources.ru/index.php?showtopic=412257&amp;view=findpost&amp;p=3763250</link>
        <description><![CDATA[JoeUser: Приветствую&#33;<br>
<br>
Решил ознакомится с Rust, но не заметил там &quot;нативной&quot; поддержки ООП. Тем не менее, конструкции языка позволяют применять инструментарий ООП. Нашел <a class='tag-url' href='https://rustycrate.ru/%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5/2017/06/11/oop-in-rust.html#polimorfizm-podtipov' target='_blank'>неплохую статью</a> про это. Но увы, цельного примера я там не нашел, все расписывалось кусками. А хотелось бы в качестве резюме - полноценный пример.<br>
<br>
Кому не лениво, и кто в теме, прошу составленный <a class='tag-url' href='https://ideone.com/4pxz4m' target='_blank'>мною синтетический пример на C++</a> перевести на Rust:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">// *****************************************************************************</div><div class="code_line">&nbsp;</div><div class="code_line">class Figure {</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual double Area() = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void PrintName() {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;std::cout &#60;&#60; &quot;Фигура = &quot; &#60;&#60; Name() &#60;&#60; &quot; &quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;virtual std::string Name() = 0;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">// *****************************************************************************</div><div class="code_line">&nbsp;</div><div class="code_line">class Rectangle: public Figure {</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit Rectangle(double h, double w): H(h), W(w) {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;double Area() override {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return H*W; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;double H,W;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string Name() override {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return &quot;Прямоугольник&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">// *****************************************************************************</div><div class="code_line">&nbsp;</div><div class="code_line">class Square: public Rectangle {</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit Square(double l): Rectangle (l,l) {}</div><div class="code_line">&nbsp;&nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string Name() override {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return &quot;Квадрат&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">// *****************************************************************************</div><div class="code_line">&nbsp;</div><div class="code_line">class Ellipse: public Rectangle {</div><div class="code_line">&nbsp;&nbsp;public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;explicit Ellipse(double a, double b): Rectangle (a,b) {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;double Area() override {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return Rectangle::Area()*3.1415; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp;private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string Name() override {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return &quot;Эллипс&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">// *****************************************************************************</div><div class="code_line">&nbsp;</div><div class="code_line">int main() {</div><div class="code_line">&nbsp;&nbsp;std::vector&#60;Figure*&#62; V;</div><div class="code_line">&nbsp;&nbsp;V.push_back(new Rectangle(2,3));</div><div class="code_line">&nbsp;&nbsp;V.push_back(new Square(4));</div><div class="code_line">&nbsp;&nbsp;V.push_back(new Ellipse(2,3));</div><div class="code_line">&nbsp;&nbsp;for(const auto &amp;i:V) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;i-&#62;PrintName();</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;, площадь: &quot; &#60;&#60; i-&#62;Area() &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;delete i;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Пока не пойму, как в Rust реализовать абстрактный класс, виртуальный метод, и как работать с перекрытием методов?]]></description>
        <author>JoeUser</author>
        <category>Rust</category>
      </item>
	
      </channel>
      </rss>
	