<?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[STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;?]]></title><description><![CDATA[<p>Hallo, ich habe eine Frage zu einem Problem was sich mir immer wieder stellt.</p>
<p>Und zwar schreibe ich immer wieder &quot;get&quot; und &quot;set&quot; Methoden um einen &quot;private&quot; STL-Container zu nutzen.</p>
<p>Die &quot;get&quot; und &quot;set&quot; Methoden sind aber so mächtig das der jeweilige STL-Container auch gleich als &quot;public&quot; definiert werden kann und ich mir die &quot;set&quot; bzw. &quot;get&quot; Methoden sparen kann.</p>
<p>Was meint ihr? Soll ich den Container bei einem wie o.g. Szenario gleich &quot;public&quot; machen?</p>
<p>Gruß<br />
Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228308/stl-container-von-quot-private-quot-nach-quot-public-quot</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 15:45:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228308.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Nov 2008 16:37:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 16:37:16 GMT]]></title><description><![CDATA[<p>Hallo, ich habe eine Frage zu einem Problem was sich mir immer wieder stellt.</p>
<p>Und zwar schreibe ich immer wieder &quot;get&quot; und &quot;set&quot; Methoden um einen &quot;private&quot; STL-Container zu nutzen.</p>
<p>Die &quot;get&quot; und &quot;set&quot; Methoden sind aber so mächtig das der jeweilige STL-Container auch gleich als &quot;public&quot; definiert werden kann und ich mir die &quot;set&quot; bzw. &quot;get&quot; Methoden sparen kann.</p>
<p>Was meint ihr? Soll ich den Container bei einem wie o.g. Szenario gleich &quot;public&quot; machen?</p>
<p>Gruß<br />
Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621255</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Wed, 26 Nov 2008 16:37:16 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 17:20:23 GMT]]></title><description><![CDATA[<p>goran schrieb:</p>
<blockquote>
<p>Die &quot;get&quot; und &quot;set&quot; Methoden sind aber so mächtig das der jeweilige STL-Container auch gleich als &quot;public&quot; definiert werden kann und ich mir die &quot;set&quot; bzw. &quot;get&quot; Methoden sparen kann.</p>
</blockquote>
<p>Die erste Frage wäre: Macht es wirklich Sinn überhaupt direkte Zugriffe auf einen Container nach außen zu geben. Aber vollkommen davon abgesehen...</p>
<p>goran schrieb:</p>
<blockquote>
<p>Was meint ihr? Soll ich den Container bei einem wie o.g. Szenario gleich &quot;public&quot; machen?</p>
</blockquote>
<p>...ein eindeutiges nein zu dieser Überlegung.</p>
<p>Getter/Setter sind immer besser als public Member. Der Grund ist schlicht und ergreifend alleine schon das man später noch Bedingungen und Prüfungen implementieren kann. Falls du Performancebedenken hast, mach sie von mir aus inline.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621285</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Nov 2008 17:20:23 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 17:29:19 GMT]]></title><description><![CDATA[<p>zeig mal den code, wie deine getter und setter im moment aussehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621291</guid><dc:creator><![CDATA[spanner]]></dc:creator><pubDate>Wed, 26 Nov 2008 17:29:19 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 19:16:35 GMT]]></title><description><![CDATA[<p>z.B.:</p>
<pre><code class="language-cpp">public:
	void addSomeString(const std::string&amp; aSomeString);
	const unsigned&amp; int getSomeStringSize() const;
	const std::string getSomeString(const unsigned int&amp; aPos) const;
	void delSomeString(const unsigned int&amp; aPos);
</code></pre>
<p>Dahinter versteckt sich nichts als</p>
<pre><code class="language-cpp">private:
	std::vector&lt;std::string&gt; itsSomeStrings;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1621365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621365</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 19:21:31 GMT]]></title><description><![CDATA[<p>Die Angelegenheit wurde <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-225835.html" rel="nofollow">hier</a> kürzlich besprochen.</p>
<p>Du solltest übrigens primitive Typen wie <code>int</code> kopieren und nicht per Const-Referenz übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621371</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 19:22:51 GMT]]></title><description><![CDATA[<p>würd ich auf jeden fall so lassen wie es ist, sonst weichst du nur völlig grundlos die kapselung auf.</p>
<p>die <code>const unsigned int&amp;</code> sind ein bissl ungewöhnlich. nimm doch std::size_t, und die referenz ist sowieso bestenfalls unnützer optischer ballast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621372</guid><dc:creator><![CDATA[spanner]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:22:51 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Wed, 26 Nov 2008 19:24:18 GMT]]></title><description><![CDATA[<p>das mit int und referenz ist ein copy fehler. aber danke für die antworten. ich lasse es dann so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621376</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:24:18 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Thu, 27 Nov 2008 07:00:27 GMT]]></title><description><![CDATA[<p>Das kommt ja auf den Verwendungszweck an, aber wenn du <strong>wirklich</strong> die ganze Schnittstelle des Containers brauchst, kannst du ja so etwas, wie SetVector() machen und da eine Referenz übergeben, und dann innerhalb deiner Funktion deinen privaten Container füllen. Wenn du später irgendwelche Überprüfungen brauchst, dann kannst du das immernoch in dieser Funktion hinzufügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621538</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 27 Nov 2008 07:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Thu, 27 Nov 2008 10:27:54 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>...Du solltest übrigens primitive Typen wie <code>int</code> kopieren und nicht per Const-Referenz übergeben.</p>
</blockquote>
<p>Nicht, dass ich widersprechen wollte, aber: Warum?<br />
Weil es einfacher zu lesen ist ?<br />
Weil es evtl. für den Compiler einfacher zu optimieren oder sonstwie schneller ist ?<br />
Weil ... ?</p>
<p>Würde mich ehrlich und ergebnisoffen interessieren.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621649</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 27 Nov 2008 10:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Thu, 27 Nov 2008 10:51:12 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>...Du solltest übrigens primitive Typen wie <code>int</code> kopieren und nicht per Const-Referenz übergeben.</p>
</blockquote>
<p>Nicht, dass ich widersprechen wollte, aber: Warum?<br />
Weil es einfacher zu lesen ist ?<br />
Weil es evtl. für den Compiler einfacher zu optimieren oder sonstwie schneller ist ?<br />
Weil ... ?</p>
<p>Würde mich ehrlich und ergebnisoffen interessieren.</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Ich bin mir jetzt nicht ganz sicher, aber ich glaube mal irgendwo was aufgeschnappt zu haben, dass es minimale Leistungseinbussen geben kann, wenn man einen primitiven Typen per Referenz übergibt. ( Leistungseinbussen, welche sonst bei grossen Typen wettgemacht wird).<br />
Aber ansonsten spielt es nicht wirklich eine Rolle. Vor allem, wenn ich eine templateklasse schreibe, kann es durchaus vorkommen, dass da halt bei der Instanzierung von primitive Datentypen Zeiger übergeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621666</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 27 Nov 2008 10:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Thu, 27 Nov 2008 18:32:30 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>...Du solltest übrigens primitive Typen wie <code>int</code> kopieren und nicht per Const-Referenz übergeben.</p>
</blockquote>
<p>Nicht, dass ich widersprechen wollte, aber: Warum?</p>
</blockquote>
<p>Ich glaube, bei primitiven Typen lohnt sich eine Kopie mehr, weil die Dereferenzierung durch die Referenz ja auch Performance braucht (gerade bei vielen Zugriffen auf die Variable).</p>
<p>Und das mit dem Besser Lesen ist natürlich ein schöner Seiteneffekt. <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/1622044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622044</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 27 Nov 2008 18:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 09:49:24 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>...Ich glaube, bei primitiven Typen lohnt sich eine Kopie mehr, weil die Dereferenzierung durch die Referenz ja auch Performance braucht (gerade bei vielen Zugriffen auf die Variable)....</p>
</blockquote>
<p>hmmmm, aber das sieht mir eher nach &quot;Mikrooptimierung&quot; aus, aus der ich keine so zentrale und allgemeingültige Designvorschrift wie<br />
&quot;...Du solltest übrigens primitive Typen wie int kopieren und nicht per Const-Referenz übergeben....&quot;<br />
konstruieren wollen würde. Gerade bei templates würde der einem eine Menge Ärger einhandeln... (Mal ganz abgesehen davon, dass es bestimmt genügend Fälle gibt, in denen der Compiler die Dereferenzierung wegoptimieren kann).</p>
<p>Einer Aussage wie: &quot;Bei primitiven Typen sind Kopien manchmal schneller als const-Refs&quot; dagegen, würde ich zustimmen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622324</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 28 Nov 2008 09:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 13:40:24 GMT]]></title><description><![CDATA[<p>Naja, ich denke so als Faustregel fährt man besser, wenn man primitive Typen per Value übergibt. Klar gehört das eher in den Mikrooptimierungsbereich, aber das gilt ja für die Const-Ref auch.</p>
<p>Bei Templates etc. bin ich natürlich mit dir einig. Wenn man sich nicht sicher ist, ob das Objekt grösser sein könnte, nimmt man besser eine Referenz. Aber ich würde primitve Typen im Allgemeinen als Wert übergeben, man verliert ja dabei nichts.</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>(Mal ganz abgesehen davon, dass es bestimmt genügend Fälle gibt, in denen der Compiler die Dereferenzierung wegoptimieren kann).</p>
</blockquote>
<p>Da wäre ich mir jetzt nicht sicher. Zumindest die Übergabe als Referenz oder Kopie ist eine klare Anweisung an den Compiler. Aber das ist wahrscheinlich alles implementationsabhängig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622452</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 28 Nov 2008 13:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 13:46:36 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>(Mal ganz abgesehen davon, dass es bestimmt genügend Fälle gibt, in denen der Compiler die Dereferenzierung wegoptimieren kann).</p>
</blockquote>
<p>Da wäre ich mir jetzt nicht sicher. Zumindest die Übergabe als Referenz oder Kopie ist eine klare Anweisung an den Compiler. Aber das ist wahrscheinlich alles implementationsabhängig...</p>
</blockquote>
<p>Also als ich damals (vll vor 5Monaten) mal gesagt hatte, dass ich denke, mal gelesen zu haben, dass const referenzen bei zu kleinen Datentypen wegoptimiert werden, wurde mir eindeutig wiedersprochen - ich habe auch nirgendwo Anhaltspunkte dazu gefunden gehabt - aber das muss natürlich nichts heißen...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622460</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 28 Nov 2008 13:46:36 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 13:53:36 GMT]]></title><description><![CDATA[<blockquote>
<p>dass const referenzen bei zu kleinen Datentypen wegoptimiert werden, wurde mir eindeutig wiedersprochen - ich habe auch nirgendwo Anhaltspunkte dazu gefunden gehabt - aber das muss natürlich nichts heißen...</p>
</blockquote>
<p>Zeit mal den Beitrag.</p>
<p>Ansonsen gilt die Regel: &quot;Wenn es nicht im Standard ist, ist es Implementierungsabhängig&quot;. Wenn es dein Compiler macht, dann ist das schön für dich, ist aber keine allgemeingültige Regel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622466</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 13:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 13:56:41 GMT]]></title><description><![CDATA[<p>ich suche noch... die suche war ja auch schon mal schneller - aber mit google habe ich nichts mehr darüber gefunden gehabt... falls ichs noch finde, werd ichs posten - aber ich weiß nich ma mehr ansatzweise, um was es in dem thread eigentlich ging ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622468</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 28 Nov 2008 13:56:41 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 13:58:40 GMT]]></title><description><![CDATA[<p>Ich wollte es kurz mal testen, mein Compiler (VC++ 2005 Express) hat aber &quot;zu viel&quot; optimiert:</p>
<pre><code class="language-cpp">int foo( const int&amp; a )
{
	return a * 5;
}
int __cdecl WinMainCRTStartup()
{
	int a = 7;
	return foo( a );
}
</code></pre>
<p>=&gt;</p>
<pre><code class="language-asm">push 35
pop eax
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1622470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622470</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Nov 2008 13:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:06:39 GMT]]></title><description><![CDATA[<p>:p<br />
Du sollst es ihm auch nicht so einfach machen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>btw:<br />
Warum benutzt du VC++05 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622475</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:10:34 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Zeit mal den Beitrag.</p>
</blockquote>
<p>Ich hab ihn gefunden: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-217599-and-postdays-is-0-and-postorder-is-asc-and-start-is-20.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-217599-and-postdays-is-0-and-postorder-is-asc-and-start-is-20.html</a></p>
<p>Tachyon sagte darin:</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Nein, die Benutzung des Referenzoperators ist eine klare Anweisung und keine Empfehlung. Es wird mit Sicherheit keine Kopie erzeugt.</p>
</blockquote>
<p>Also was gilt nun? Sagt der Standard diesbezüglich etwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622478</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:12:41 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Warum benutzt du VC++05?</p>
</blockquote>
<p>Zu VC++ 08 (Express) bin ich irgendwie noch nicht konvertiert. Hab's mir zwar geholt, verspreche mir im Moment von einer Umstellung aber nicht allzu viel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Zumal ich noch nicht wegen Kompatibilitäten geschaut habe, also welche CRT-Sachen man dazu installieren muss usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622481</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:12:41 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:29:06 GMT]]></title><description><![CDATA[<p>nexus, wie hast du den so schnell gefunden? oO</p>
<p>ich hab meine gesamten Beiträge angeguckt und gesucht xD hatte ihn gerade auch gefunden ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622488</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:37:43 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>nexus, wie hast du den so schnell gefunden? oO</p>
</blockquote>
<p>Ich habe nach &quot;Anweisung&quot; und Autor &quot;Tachyon&quot; gesucht, da ich noch ziemlich genau wusste, was er damals sagte... <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/1622492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622492</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:37:43 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:42:22 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>nexus, wie hast du den so schnell gefunden? oO</p>
</blockquote>
<p>Ich habe nach &quot;Anweisung&quot; und Autor &quot;Tachyon&quot; gesucht, da ich noch ziemlich genau wusste, was er damals sagte... <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>
</blockquote>
<p>Hmm... wow ^^<br />
Entweder es hat dich so beschäftigt oder es is normal sich so ne Dinge zu merken und ich hab Allzeimer ^^<br />
Übrigens hab ich noch mal gesucht und nirgendwo auch nur einen Hinweis gefunden, dass der compiler das wegoptimiert...<br />
mal gucken, ob ich meinen Compiler dazu bringen kann, mir die Frage zu beantworten ^^</p>
<p>bis später</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622494</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:49:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Nein, die Benutzung des Referenzoperators ist eine klare Anweisung und keine Empfehlung. Es wird mit Sicherheit keine Kopie erzeugt.</p>
</blockquote>
<p>Also was gilt nun? Sagt der Standard diesbezüglich etwas?</p>
</blockquote>
<p>Ich sehe im Standard nix, was dagegen spricht das ganze wegzuoptimieren, sofern es das Verhalten des Codes nicht verändert.</p>
<p>ISO/IEC 14882 8.3.2/3 schrieb:</p>
<blockquote>
<p>It is unspecified whether or not a reference requires storage (3.7).</p>
</blockquote>
<p>besagt ja, dass man durchaus so etwas, wie eine Kopie erstellen darf. Sofern man das Objekt natürlich verändert geht das nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622498</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:57:18 GMT]]></title><description><![CDATA[<p>Hm... Naja, ich werde primitive Typen weiterhin als Wert statt als Const-Referenz übergeben. Eigentlich sollte ich dadurch keine Vorteile erhalten. Das Ganze sieht auch übersichtlicher aus - nicht nur, dass es weniger Platz benötigt, man erkennt auch gleich, dass es sich um &quot;ein leichtes Objekt&quot; handelt.</p>
<p>Auch wenn Referenzen rausoptimiert werden könnten, würde ich mich jetzt nicht darauf verlassen. Zumal im Normalfall nichts gegen Kopie spricht (als Ausnahme beispielsweise Templates).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622503</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:57:18 GMT</pubDate></item><item><title><![CDATA[Reply to STL-Container von &amp;quot;private&amp;quot; nach &amp;quot;public&amp;quot;? on Fri, 28 Nov 2008 14:57:42 GMT]]></title><description><![CDATA[<p>also ich hab jz gerad mal nen bsp gebastelt in der er mir die fkt nicht geinlined hat - offenbar bleibt die referenz (wobei das zugegebenermaßen nur eine Schätzung ist - sollte ma jmd angucken, der über asm mehr als nur die synthax zu mov kennt ;o)):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

void Ausgeben(const char&amp; ausgeben)
{
	const char ausgeben2 = ausgeben + 2;
	if(ausgeben2 == 'A')
		throw std::runtime_error(&quot;asd&quot;);
	cout &lt;&lt; ausgeben &lt;&lt; &quot; =&gt; &quot; &lt;&lt; ausgeben2 &lt;&lt; endl;
}//musste ja gucken, dass er sie nicht inlined, deshalb die exception...

int main()
{
	char t(0);
	cin &gt;&gt; t;
	Ausgeben(t);
}
</code></pre>
<p>macht in der main-fkt also:</p>
<pre><code>int main()
{
003C11F0  push        ecx  
	char t(0);
	cin &gt;&gt; t;
003C11F1  mov         ecx,dword ptr [__imp_std::cin (3C3074h)] 
003C11F7  lea         eax,[esp+3] 
003C11FB  push        eax  
003C11FC  push        ecx  
003C11FD  mov         byte ptr [esp+0Bh],0 
003C1202  call        dword ptr [__imp_std::operator&gt;&gt;&lt;char,std::char_traits&lt;char&gt; &gt; (3C3070h)] 
	Ausgeben(t);
003C1208  lea         edx,[esp+0Bh] 
003C120C  push        edx  
003C120D  call        Ausgeben (3C1130h) 
}
</code></pre>
<p>(die fkt Ausgeben hab ich ma weggelassen)<br />
außer nen kleines stück (der ausgabe am ende der fkt), was in meinen augen meine vermutung doch noch untermauert:</p>
<pre><code>003C119F  mov         edx,dword ptr [__imp_std::endl (3C3048h)] 
003C11A5  mov         eax,dword ptr [esp+4]
</code></pre>
<p>die Compiler Optionen meines VS 2008 Prof.:</p>
<pre><code>/O2 /Oi /GL /D &quot;_MBCS&quot; /FD /EHsc /MD /Gy /Fo&quot;Release\\&quot; /Fd&quot;Release\vc90.pdb&quot; /W3 /nologo /c /Zi /TP /errorReport:prompt
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622504</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 28 Nov 2008 14:57:42 GMT</pubDate></item></channel></rss>