<?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>Комментарии на: О копировании объектов в C++</title>
	<atom:link href="http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/</link>
	<description>Сборник рецептов</description>
	<lastBuildDate>Mon, 03 Oct 2011 12:26:02 +0400</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>От: sba</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-2109</link>
		<dc:creator>sba</dc:creator>
		<pubDate>Wed, 18 May 2011 13:17:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-2109</guid>
		<description>2picania: А если добрый дядя из соседнего отдела в своем cpp файле предусмотрит определение и копирующего конструктора и оператора присваивания для Вашего класса? Вобщем это извечный вопрос определять или не определять (только объявлять). Лично я тоже не определяю, но доброго дядю остерегаюсь.</description>
		<content:encoded><![CDATA[<p>2picania: А если добрый дядя из соседнего отдела в своем cpp файле предусмотрит определение и копирующего конструктора и оператора присваивания для Вашего класса? Вобщем это извечный вопрос определять или не определять (только объявлять). Лично я тоже не определяю, но доброго дядю остерегаюсь.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Максим Тремпольцев</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1575</link>
		<dc:creator>Максим Тремпольцев</dc:creator>
		<pubDate>Thu, 03 Feb 2011 17:09:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1575</guid>
		<description>Согласен</description>
		<content:encoded><![CDATA[<p>Согласен</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: picania</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1570</link>
		<dc:creator>picania</dc:creator>
		<pubDate>Wed, 02 Feb 2011 19:12:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1570</guid>
		<description>Цитата: Для этого надо перенести объявления копирующего конструктора и оператора присваивания в защищенную секцию (определять их необязательно)...
Лично я склоняюсь к тому, что их нужно ОБЯЗАТЕЛЬНО НЕ определять... Поскольку, не дай Бог внутри класса Port вы присвоите один порт другому и это присваивание прокатит, так как имеется их реализация. Но если реализация отсутствует, ошибка будет отловлена на стадии линковки.</description>
		<content:encoded><![CDATA[<p>Цитата: Для этого надо перенести объявления копирующего конструктора и оператора присваивания в защищенную секцию (определять их необязательно)&#8230;<br />
Лично я склоняюсь к тому, что их нужно ОБЯЗАТЕЛЬНО НЕ определять&#8230; Поскольку, не дай Бог внутри класса Port вы присвоите один порт другому и это присваивание прокатит, так как имеется их реализация. Но если реализация отсутствует, ошибка будет отловлена на стадии линковки.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Максим Тремпольцев</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1535</link>
		<dc:creator>Максим Тремпольцев</dc:creator>
		<pubDate>Thu, 20 Jan 2011 17:09:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1535</guid>
		<description>Работать компилятором - дело неблагодарное :)</description>
		<content:encoded><![CDATA[<p>Работать компилятором &#8211; дело неблагодарное :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: xrnd</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1533</link>
		<dc:creator>xrnd</dc:creator>
		<pubDate>Thu, 20 Jan 2011 04:04:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1533</guid>
		<description>Очень интересная статья.

А я всегда пишу в копируемых классах конструктор копирования и оператор присваивания.
Боюсь, вдруг компилятор неправильно скопирует ;)</description>
		<content:encoded><![CDATA[<p>Очень интересная статья.</p>
<p>А я всегда пишу в копируемых классах конструктор копирования и оператор присваивания.<br />
Боюсь, вдруг компилятор неправильно скопирует ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Vernat</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1135</link>
		<dc:creator>Vernat</dc:creator>
		<pubDate>Mon, 06 Sep 2010 12:59:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1135</guid>
		<description>еще про запрет копирования, в Qt  есть такой простой макрос 
#define Q_DISABLE_COPY(Class) \
    Class(const Class &amp;); \
    Class &amp;operator=(const Class &amp;);

просто и работает, меньше возьни с ручным описанием</description>
		<content:encoded><![CDATA[<p>еще про запрет копирования, в Qt  есть такой простой макрос<br />
#define Q_DISABLE_COPY(Class) \<br />
    Class(const Class &amp;); \<br />
    Class &amp;operator=(const Class &amp;);</p>
<p>просто и работает, меньше возьни с ручным описанием</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Максим Тремпольцев</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1043</link>
		<dc:creator>Максим Тремпольцев</dc:creator>
		<pubDate>Fri, 30 Jul 2010 08:09:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1043</guid>
		<description>ilnar, в целом справедливо, но:
1) Никаких локальных переменных до блока проверки быть не должно по определению
2) Вопрос вкуса, но мне кажутся наглядней короткие блоки if</description>
		<content:encoded><![CDATA[<p>ilnar, в целом справедливо, но:<br />
1) Никаких локальных переменных до блока проверки быть не должно по определению<br />
2) Вопрос вкуса, но мне кажутся наглядней короткие блоки if</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: ilnar</title>
		<link>http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/comment-page-1/#comment-1042</link>
		<dc:creator>ilnar</dc:creator>
		<pubDate>Fri, 30 Jul 2010 07:42:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.devexp.ru/2010/03/o-kopirovanii-obektov-v-c/#comment-1042</guid>
		<description>Пример с присваиванием плох наличием двх return.
DataMessage&amp; operator=(const DataMessage&amp; from)
{
	if (this == &amp;from)
	{
		return *this;
	}
	Message::operator=(from);
	Data_ = from.Data_;
	return *this;
}
Это заставляет компилятора вставлять 2 раза код возврата, того хуже, вызова деструкторов локальных переменных, если они будут.
Предпочтительный вариант, который можно найти у Майерса:
DataMessage&amp; operator=(const DataMessage&amp; from)
{
	if (this != &amp;from)
	{
		Message::operator=(from);
		Data_ = from.Data_;
	}
	return *this;
}</description>
		<content:encoded><![CDATA[<p>Пример с присваиванием плох наличием двх return.<br />
DataMessage&amp; operator=(const DataMessage&amp; from)<br />
{<br />
	if (this == &amp;from)<br />
	{<br />
		return *this;<br />
	}<br />
	Message::operator=(from);<br />
	Data_ = from.Data_;<br />
	return *this;<br />
}<br />
Это заставляет компилятора вставлять 2 раза код возврата, того хуже, вызова деструкторов локальных переменных, если они будут.<br />
Предпочтительный вариант, который можно найти у Майерса:<br />
DataMessage&amp; operator=(const DataMessage&amp; from)<br />
{<br />
	if (this != &amp;from)<br />
	{<br />
		Message::operator=(from);<br />
		Data_ = from.Data_;<br />
	}<br />
	return *this;<br />
}</p>
]]></content:encoded>
	</item>
</channel>
</rss>

