<?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[Kennzeichnung von privaten Attributen]]></title><description><![CDATA[<p>Hallo,</p>
<p>kurze Frage die mir jetzt schon seit ner Weile auf der Seele brennt.<br />
Ich fang ja erst an und hatte mir ja auch versucht so ein bischen eine einheitliche schreibweise anzugewöhnen.</p>
<p>Also dachte ich mir private attribute einer klasse mit einem _ davor zu kennzeichnen. Der grund ?<br />
Ganz einfach, hier ein Bsp aus dem buch hier, macht sich ganz gut dafür.</p>
<pre><code class="language-cpp">class CBecher
{
private:  // ich weiß, braucht man nicht extra hinschreiben
   string _inhalt;
   int _fuellhoehe;
   float _fuellmenge;
public:
   CBecher(string Inhalt, int fuellmenge, float fuellhoehe)
      : _inhalt(Inhalt), _fuellmenge(fuellmenge), _fuellhoehe(fuellhoehe)
   {};
};
</code></pre>
<p>So, soll mal als Bsp. dienen.</p>
<p>Wenn ich jetzt einen Becher erstelle, dann kommt intellisense und macht doch so ein kleines gelbes fenster beim schreiben wo drin steht was man beim erstellen eines Bechers alles angeben muss. Ist ja kein Standart konstruktor verfügbar.<br />
Ihr wisst hoffentlich was ich meine ?</p>
<p>Becher erzeugen:</p>
<pre><code class="language-cpp">CBecher b = new CBecher(Inhalt, fuellmenge, fuellhoehe);
</code></pre>
<p>Sobald man die Klammer hinter CBecher aufmacht kommt das Fensterchen.</p>
<p>Ok, und genau dort steht dann nicht z.B. CBecher(i, fm, fh) oder so was in der art.</p>
<p>Wie macht ihr das also das ihr da nicht durcheinander kommt ?</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170540/kennzeichnung-von-privaten-attributen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 02:45:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170540.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 17 Jan 2007 09:33:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 09:33:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kurze Frage die mir jetzt schon seit ner Weile auf der Seele brennt.<br />
Ich fang ja erst an und hatte mir ja auch versucht so ein bischen eine einheitliche schreibweise anzugewöhnen.</p>
<p>Also dachte ich mir private attribute einer klasse mit einem _ davor zu kennzeichnen. Der grund ?<br />
Ganz einfach, hier ein Bsp aus dem buch hier, macht sich ganz gut dafür.</p>
<pre><code class="language-cpp">class CBecher
{
private:  // ich weiß, braucht man nicht extra hinschreiben
   string _inhalt;
   int _fuellhoehe;
   float _fuellmenge;
public:
   CBecher(string Inhalt, int fuellmenge, float fuellhoehe)
      : _inhalt(Inhalt), _fuellmenge(fuellmenge), _fuellhoehe(fuellhoehe)
   {};
};
</code></pre>
<p>So, soll mal als Bsp. dienen.</p>
<p>Wenn ich jetzt einen Becher erstelle, dann kommt intellisense und macht doch so ein kleines gelbes fenster beim schreiben wo drin steht was man beim erstellen eines Bechers alles angeben muss. Ist ja kein Standart konstruktor verfügbar.<br />
Ihr wisst hoffentlich was ich meine ?</p>
<p>Becher erzeugen:</p>
<pre><code class="language-cpp">CBecher b = new CBecher(Inhalt, fuellmenge, fuellhoehe);
</code></pre>
<p>Sobald man die Klammer hinter CBecher aufmacht kommt das Fensterchen.</p>
<p>Ok, und genau dort steht dann nicht z.B. CBecher(i, fm, fh) oder so was in der art.</p>
<p>Wie macht ihr das also das ihr da nicht durcheinander kommt ?</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211201</guid><dc:creator><![CDATA[STF-DIR]]></dc:creator><pubDate>Wed, 17 Jan 2007 09:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 09:45:17 GMT]]></title><description><![CDATA[<p>STF-DIR schrieb:</p>
<blockquote>
<p>...<br />
Also dachte ich mir private attribute einer klasse mit einem _ davor zu kennzeichnen. ...</p>
</blockquote>
<p>Hi,</p>
<p>ich glaube, in dem Buch geht es nicht so sehr um die &quot;Privatheit&quot; der Attribute, als vielmehr darum, dass es eben Attribute der Klasse sind ... und ich persönlich halte da gar nichts von. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Einerseits ist es gefährlich, weil es Compiler gibt, die selbst eine Menge &quot;Interna&quot; einführe, die sie damit kennzeichnen, dass ihre Namen mit '_' anfangen ... plötzlich läuft Dein Code nicht oder macht seltsame Kapriolen, weil Du zufällig einen Namen erwischt hast, mit der Compiler (vielleicht erst in dieser Version) damit etwas ganz anderes verbindet.</p>
<p>Andererseits verbringt man viel Zeit damit, diese Namen zu pflegen ... irgendwann stellst Du fest, dass Du statt eines Attributs lieber eine Funktion desselben Namens verwenden möchtest ... dann musst Du den gesamten Code durchfräsen und den underscore wegmachen ... und überhaupt: Wieso sollten Memberfunktionen keinen '_' haben ?</p>
<p>Und schließlich sehe ich da keinen Vorteil drin.<br />
Pro: 0 Contra: 2 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>STF-DIR schrieb:</p>
<blockquote>
<p>...<br />
Ok, und genau dort steht dann nicht z.B. CBecher(i, fm, fh) oder so was in der art....</p>
</blockquote>
<p>Sondern ? Steht da nichts drin oder was Anderes ?<br />
Ich vermute mal, Du nutzt eine Microsoft-IDE, oder ?<br />
Meine VC6.0 kommt damit auch recht häufig durcheinander und ich habe noch nicht rausbekommen, warum bzw. was ich dagegen tue. Da ich inzwischen auf eclipse&amp;gcc umgestiegen bin (und der diese Probleme nicht und dafür einige Vorteile hat), habe ich da auch keine Lösung für. Ich glaube allerdings nicht unbedingt, dass das an den '_' liegt...</p>
<p>Gruß</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211206</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 17 Jan 2007 09:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 09:47:43 GMT]]></title><description><![CDATA[<p>Eine einheitliche Schreibweise für Member gibt es nicht, nur verschiedene persönliche Meinungen (von 'm_Name' bis hin zu 'Name_' - die Schreibweise '_Name' könnte Probleme geben, weil solche Namen für den Compiler freigegeben sind).</p>
<p>Anmerkung: Was Intellisense dir da entgegenspuckt, sind die Parameternamen, die du bei der Konstruktor-Deklaration angegeben hast - wenn du die Chance hast, sollten die schon vernünftig gewählt werden. Aber du bist natürlich nicht verpflichtet, gleichnamige Variablen für den Aufruf anzulegen - <code>CBecher* b = new CBecher(&quot;Kamillentee&quot;,1,0.3);</code> geht genauso durch den Compiler <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/1211210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211210</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Jan 2007 09:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 09:59:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>dank für die Antwort !</p>
<p>Also Methoden oder funktionen sollten gleube ich keinen _ am Anfang haben weil es da eben auch funktionen gibt die mit _ anfangen.<br />
Das kann dann genauso zu einem durcheinander führen oder ?</p>
<p>Ja ich benutze die IDE von MS, steht in meiner Signatur <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>Ich hab mal ein Bild gemacht was ich meine :</p>
<p><a href="http://www.starflight-virtual.de/image318.jpg" rel="nofollow">http://www.starflight-virtual.de/image318.jpg</a></p>
<p>da sieht man das kleine Fenster was ich meine.</p>
<p>der Konstruktor dazu sieht jetzt so aus :</p>
<pre><code class="language-cpp">CBecher(System::String^ inhalt, System::UInt32 fassungsvermoegen, System::Single fuellhoehe);
</code></pre>
<p>Wenn der so ausshen würde :</p>
<pre><code class="language-cpp">CBecher(System::String^ i, System::UInt32 fv, System::Single fh);
</code></pre>
<p>dann würde Intellisense ja auch was anderes vorschlagen in dem gelben fensterchen, und zwar würde dann auch nur i, fv und fh drin stehen und das ist ja nicht wirklich aussagekräftig was das genau sein soll oder ?</p>
<p>Also wie macht ihr das ?</p>
<p>Man hat ja im grunde genommen einen Wert für das private Attribut, dann vielleicht noch eine Property, die anders heißen muss und einen Konstruktor ja auch noch dem da andere Veriablennamen übergeben werden müssen.<br />
Das wären ja jetzt schon 3 verschieden namen für einen Wert oder ?</p>
<p>Hmm, könnte das nicht zu einem Variablennamen Wirrwar führen ?</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211219</guid><dc:creator><![CDATA[STF-DIR]]></dc:creator><pubDate>Wed, 17 Jan 2007 09:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 10:09:51 GMT]]></title><description><![CDATA[<p>Wie gesagt, das Intellisense gibt immer die Deklaration der entsprechenden Funktion wieder - wie die privaten Member heißen, sollte für den Anwender auch egal sein. Deshalb verwende ich normalerweise für die CTor-Parameter besonders klangvolle Namen (die sieht man in Dokumentationen oder eben beim Intellisense) und für die tatsächlichen Membervariablen idR 'm_Name'.<br />
Properties gibt es in reinem C++ nicht, höchstens Getter und Setter (die dann entsprechend als getName() bzw. setName() bezeichnet werden) - und selbst wenn, besteht da afaik kein Namenskonflikt zwischen dem Ctor-Parameter und einer eventuell gleichnamigen Property.</p>
<p>Namen, die mit _ beginnen, solltest du besser nicht verwenden, die sind für die interne Verwendung durch den Compiler reserviert (und selbst wenn die aktuelle Version sie nicht nutzt - in der nächsten Version kann das schon wieder anders aussehen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211227</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Jan 2007 10:09:51 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 10:18:04 GMT]]></title><description><![CDATA[<p>Ok, alles klar,</p>
<p>ich werde die dann sicher auch m_Name nennen damit ich die unterscheiden kann.</p>
<p>Danke Euch !!</p>
<p>MAtthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211232</guid><dc:creator><![CDATA[STF-DIR]]></dc:creator><pubDate>Wed, 17 Jan 2007 10:18:04 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 11:35:34 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Namen, die mit _ beginnen, solltest du besser nicht verwenden, die sind für die interne Verwendung durch den Compiler reserviert (und selbst wenn die aktuelle Version sie nicht nutzt - in der nächsten Version kann das schon wieder anders aussehen).</p>
</blockquote>
<p>Das sollte echt mal jemand bei snopes eintragen. (Und nein, die Regeln sind nicht wirklich <em>zu</em> kompliziert.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211296</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 17 Jan 2007 11:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 11:43:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>was ist &quot;snopes&quot; ?? und an wen war das posting jetzt ggerichtet ? Speziell das was Du in Klammern geschrieben hast.</p>
<p>Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211302</guid><dc:creator><![CDATA[STF-DIR]]></dc:creator><pubDate>Wed, 17 Jan 2007 11:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 11:51:04 GMT]]></title><description><![CDATA[<p>STF-DIR schrieb:</p>
<blockquote>
<p>was ist &quot;snopes&quot; ??</p>
</blockquote>
<p><a href="https://www.google.de/search?&amp;q=snopes" rel="nofollow">Google: snopes</a>, erster Treffer: <a href="http://www.snopes.com" rel="nofollow">www.snopes.com</a></p>
<p>STF-DIR schrieb:</p>
<blockquote>
<p>und an wen war das posting jetzt ggerichtet ? Speziell das was Du in Klammern geschrieben hast.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1211309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211309</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 17 Jan 2007 11:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 11:55:10 GMT]]></title><description><![CDATA[<p>Es gibt uebrigens einen FAQ-Eintrag dazu:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39461.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39461.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211312</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Wed, 17 Jan 2007 11:55:10 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 12:04:59 GMT]]></title><description><![CDATA[<p>Blue-Tiger schrieb:</p>
<blockquote>
<p>Es gibt uebrigens einen FAQ-Eintrag dazu:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39461.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39461.html</a></p>
</blockquote>
<p>Danke , habs gerade gelesen !</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4239">@finix</a></p>
<p>Was hat das alles hier denn mit DIESER seite zu tun ?<br />
Ich mach doch hier keine Faxen oder ähnliches !<br />
Ich versuche hier ernsthaft zu lernen !</p>
<p>Für mich ist die Frage jetzt geklärt.</p>
<p>Danke allen<br />
Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211320</guid><dc:creator><![CDATA[STF-DIR]]></dc:creator><pubDate>Wed, 17 Jan 2007 12:04:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kennzeichnung von privaten Attributen on Wed, 17 Jan 2007 13:34:12 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das bezog sich auch nicht auf Dich, sondern auf CStoll ... vermutlich hält finix die Sache mit den underscores für eine &quot;urban legend&quot; (die eben bei snopes gesammelt und untersucht werden).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211372</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 17 Jan 2007 13:34:12 GMT</pubDate></item></channel></rss>