<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Коментари на: Виртуални функции</title>
	<atom:link href="http://www.cphpvb.net/pik-3/282-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d0%bd%d0%b8-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cphpvb.net/pik-3/282-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d0%bd%d0%b8-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8/</link>
	<description>дневникът на Филип Петров</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:50:41 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>От: p0</title>
		<link>http://www.cphpvb.net/pik-3/282-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d0%bd%d0%b8-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8/#comment-5260</link>
		<dc:creator>p0</dc:creator>
		<pubDate>Sun, 08 Nov 2009 12:36:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.cphpvb.net/?p=282#comment-5260</guid>
		<description>Ясно.</description>
		<content:encoded><![CDATA[<p>Ясно.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Филип Петров</title>
		<link>http://www.cphpvb.net/pik-3/282-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d0%bd%d0%b8-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8/#comment-5259</link>
		<dc:creator>Филип Петров</dc:creator>
		<pubDate>Sun, 08 Nov 2009 12:21:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.cphpvb.net/?p=282#comment-5259</guid>
		<description>Инстанция на абстрактен клас НЕ може да се прави. Не съм споменал в статията обаче какво е абстрактен клас.

Когато в един клас има виртуална функция, то той не е обезателно абстрактен. Класът става абстрактен когато функцията е т.нар. &quot;pure virtual function&quot; или както е в нашия случай:

&lt;em&gt;virtual double getarea() = 0;&lt;/em&gt;

С така дефинирана виртуална функция класът Е абстрактен и НЕ може да се прави инстанция. Нищо обаче не ни спира да създаваме указатели. В горния пример аз съм създал &quot;указател към обект от клас area&quot;, а не &quot;инстанция на обект от клас area&quot;. На този указател пък присвояваме стойност на адрес не на обект от тип area (такъв не можем да създадем), а на обект от тип &quot;rectangle&quot; или &quot;triangle&quot;, т.е. получава се &quot;полиморфизъм&quot;.

Както казах обаче може да имаме виртуална функция в клас и въпреки това да направим инстанция на обект. Например промени горния код с:

&lt;em&gt;virtual double getarea(){
   cout &lt;&lt; &quot;I do not know how to calculate the area&quot;;
}&lt;/em&gt;

Така вече ще можеш да правиш инстанция на area (този клас вече не е абстрактен).</description>
		<content:encoded><![CDATA[<p>Инстанция на абстрактен клас НЕ може да се прави. Не съм споменал в статията обаче какво е абстрактен клас.</p>
<p>Когато в един клас има виртуална функция, то той не е обезателно абстрактен. Класът става абстрактен когато функцията е т.нар. &#8222;pure virtual function&#8220; или както е в нашия случай:</p>
<p><em>virtual double getarea() = 0;</em></p>
<p>С така дефинирана виртуална функция класът Е абстрактен и НЕ може да се прави инстанция. Нищо обаче не ни спира да създаваме указатели. В горния пример аз съм създал &#8222;указател към обект от клас area&#8220;, а не &#8222;инстанция на обект от клас area&#8220;. На този указател пък присвояваме стойност на адрес не на обект от тип area (такъв не можем да създадем), а на обект от тип &#8222;rectangle&#8220; или &#8222;triangle&#8220;, т.е. получава се &#8222;полиморфизъм&#8220;.</p>
<p>Както казах обаче може да имаме виртуална функция в клас и въпреки това да направим инстанция на обект. Например промени горния код с:</p>
<p><em>virtual double getarea(){<br />
   cout &lt;&lt; &#8222;I do not know how to calculate the area&#8220;;<br />
}</em></p>
<p>Така вече ще можеш да правиш инстанция на area (този клас вече не е абстрактен).</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: p0</title>
		<link>http://www.cphpvb.net/pik-3/282-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d0%bd%d0%b8-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8/#comment-5258</link>
		<dc:creator>p0</dc:creator>
		<pubDate>Sun, 08 Nov 2009 11:41:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.cphpvb.net/?p=282#comment-5258</guid>
		<description>Много интересен пример. Може ли да създаваме инстанции на абстрактен клас? От това, което сме учили досега стана ясно, че абстрактните класове се използват само, за да бъдат наследявани, но НЕ и да им се създават инстанции.</description>
		<content:encoded><![CDATA[<p>Много интересен пример. Може ли да създаваме инстанции на абстрактен клас? От това, което сме учили досега стана ясно, че абстрактните класове се използват само, за да бъдат наследявани, но НЕ и да им се създават инстанции.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

