<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Wieso geht diese Zuweisung?]]></title><description><![CDATA[<p>Abend, ich habe eine Frage zu folgendem Code:</p>
<pre><code class="language-cpp">map&lt;string, weak_ptr&lt;Foo&gt;&gt; mMap;
...
shared_ptr&lt;Foo&gt; sharedPtr;
mMap[&quot;test&quot;] = sharedPtr;
</code></pre>
<p>Wieso geht das? Kann mir einer den genauen Ablauf skizzieren, der da stattfindet, also welche Methoden/Operatoren in welcher Reihenfolge aufgerufen werden. Erst map::operator[], dann operators= etc.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299178/wieso-geht-diese-zuweisung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 10:01:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299178.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Feb 2012 19:05:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Sat, 04 Feb 2012 19:05:46 GMT]]></title><description><![CDATA[<p>Abend, ich habe eine Frage zu folgendem Code:</p>
<pre><code class="language-cpp">map&lt;string, weak_ptr&lt;Foo&gt;&gt; mMap;
...
shared_ptr&lt;Foo&gt; sharedPtr;
mMap[&quot;test&quot;] = sharedPtr;
</code></pre>
<p>Wieso geht das? Kann mir einer den genauen Ablauf skizzieren, der da stattfindet, also welche Methoden/Operatoren in welcher Reihenfolge aufgerufen werden. Erst map::operator[], dann operators= etc.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176893</guid><dc:creator><![CDATA[MapFrage]]></dc:creator><pubDate>Sat, 04 Feb 2012 19:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Sat, 04 Feb 2012 19:06:43 GMT]]></title><description><![CDATA[<p>Wieso sollte sie nicht gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176894</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Sat, 04 Feb 2012 19:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Sat, 04 Feb 2012 19:09:40 GMT]]></title><description><![CDATA[<p>MapFrage schrieb:</p>
<blockquote>
<p>Danke!</p>
</blockquote>
<p>Mach dir doch einfach mal zwei Klassen, die genau diese Operatoren überladen und guck wie die Ausgabe aussieht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176895</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 04 Feb 2012 19:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Sat, 04 Feb 2012 19:13:41 GMT]]></title><description><![CDATA[<p>Also, ich nehme an, in weak_ptr gibt es sowas:</p>
<pre><code class="language-cpp">weak_ptr&amp; operator=(const shared_ptr&amp;);
</code></pre>
<p>Oder es sind beides Kind-klassen, und es gibt einen polymorphen Zuweisungsoperator...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176896</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 04 Feb 2012 19:13:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Sat, 04 Feb 2012 19:14:28 GMT]]></title><description><![CDATA[<p>Jup:</p>
<pre><code class="language-cpp">template&lt;class Y&gt; weak_ptr &amp; operator=(shared_ptr&lt;Y&gt; const &amp; r);
</code></pre>
<p><a href="http://www.boost.org/doc/libs/1_42_0/libs/smart_ptr/weak_ptr.htm#Members" rel="nofollow">http://www.boost.org/doc/libs/1_42_0/libs/smart_ptr/weak_ptr.htm#Members</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176898</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 04 Feb 2012 19:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Sun, 05 Feb 2012 11:27:08 GMT]]></title><description><![CDATA[<p>MapFrage schrieb:</p>
<blockquote>
<p>Kann mir einer den genauen Ablauf skizzieren, der da stattfindet, also welche Methoden/Operatoren in welcher Reihenfolge aufgerufen werden. Erst map::operator[], dann operators= etc.</p>
</blockquote>
<p>Du könntest Dir einen Debugger schnappen und damit Schritt für Schritt in dem Code der aufgerufen wird durchgehen. Dann kannst Du das selber, live und in Farbe miterleben. Verglichen mit einer spröden Antwort eines gelangweilten Forenmitglieds ein unvergessliches und didaktisch nicht zu übertreffendes Erlebnis!</p>
<p>Aber im Prinzip liegst Du mit deiner Vermutung schon ganz richtig. Es wird der [] operator mit dem Argument &quot;test&quot; (für das vorher noch der string konstruktor aufgerufen wurde) aufgerufen, der mittels lower_bound o.ä. nach dem Schlüssel sucht. Falls er an der gefundenen Stelle nicht vorhanden ist, wird er dort angelegt und eine Referenz auf das ebenfalls dort angelegte Element vom Typ weak_ptr&lt;Foo&gt; zurückgeben. Danach wird dann der schon benannte =operator von weak_ptr aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2177081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2177081</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 05 Feb 2012 11:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Mon, 06 Feb 2012 19:44:23 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Oder es sind beides Kind-klassen, und es gibt einen polymorphen Zuweisungsoperator...</p>
</blockquote>
<p>Kommt sowas tatsächlich in Produktivcode vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2177739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2177739</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 06 Feb 2012 19:44:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wieso geht diese Zuweisung? on Mon, 06 Feb 2012 20:00:33 GMT]]></title><description><![CDATA[<p>Edit: Produktivcode &lt;=&gt; Programmcode, der für die Verwendung auf eingebetteten Systemen, insbesondere in Echtzeitumgebungen, geeignet ist oder? Google hilft nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2177745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2177745</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 06 Feb 2012 20:00:33 GMT</pubDate></item></channel></rss>