<?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[ungewollter Zugriff auf private member]]></title><description><![CDATA[<p>Hallo,</p>
<p>in dem Programm ist der +-Operator überladen, um komplexe Zahlen zu addieren.</p>
<pre><code>class Komplex{

double Re;
double Im;

public:

/*
...
*/

// Ueberladung der Addition

Komplex operator+(const Komplex &amp;z )const{
	Komplex sum;
	sum.Re = this -&gt; Re + z.Re; // Zugriff auf Re-Member vom Objekt sum
	sum.Im = this -&gt; Im + z.Im; // do.

	return sum;
	}

};
</code></pre>
<p>Der Code funktioniert wie gewünscht, doch folgendes verstehe ich nicht,</p>
<p>wieso kann man auf <strong><a href="http://sum.Re" rel="nofollow">sum.Re</a></strong> zugreifen, Re ist doch als private deklariert?</p>
<p>Ich habe mit C++ und Programmieren noch nicht so viel Erfahrung und bin darum für Antworten sehr dankbar.</p>
<p>Vielen Dank schon jetzt <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>Aiko</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312066/ungewollter-zugriff-auf-private-member</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 03:52:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312066.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Dec 2012 23:15:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ungewollter Zugriff auf private member on Sat, 22 Dec 2012 23:15:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in dem Programm ist der +-Operator überladen, um komplexe Zahlen zu addieren.</p>
<pre><code>class Komplex{

double Re;
double Im;

public:

/*
...
*/

// Ueberladung der Addition

Komplex operator+(const Komplex &amp;z )const{
	Komplex sum;
	sum.Re = this -&gt; Re + z.Re; // Zugriff auf Re-Member vom Objekt sum
	sum.Im = this -&gt; Im + z.Im; // do.

	return sum;
	}

};
</code></pre>
<p>Der Code funktioniert wie gewünscht, doch folgendes verstehe ich nicht,</p>
<p>wieso kann man auf <strong><a href="http://sum.Re" rel="nofollow">sum.Re</a></strong> zugreifen, Re ist doch als private deklariert?</p>
<p>Ich habe mit C++ und Programmieren noch nicht so viel Erfahrung und bin darum für Antworten sehr dankbar.</p>
<p>Vielen Dank schon jetzt <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>Aiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282538</guid><dc:creator><![CDATA[Aiko]]></dc:creator><pubDate>Sat, 22 Dec 2012 23:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to ungewollter Zugriff auf private member on Sat, 22 Dec 2012 23:24:23 GMT]]></title><description><![CDATA[<p>bei dir ist die Implementierung des &quot;+ Operators&quot; ein Member der Klasse und somit kann diese auch auf private Member zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282540</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Sat, 22 Dec 2012 23:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to ungewollter Zugriff auf private member on Sat, 22 Dec 2012 23:29:39 GMT]]></title><description><![CDATA[<blockquote>
<p>class Komplex{<br />
private: // habe ich hinzu gefügt <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 />
double Re;<br />
double Im;</p>
<p>public:</p>
</blockquote>
<p>meines er achtens müsste da noch ein privat über dem double Re. <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>
<p>aber das von ihm hört sich logischer an <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>gruß<br />
coco</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282541</guid><dc:creator><![CDATA[CocoEi]]></dc:creator><pubDate>Sat, 22 Dec 2012 23:29:39 GMT</pubDate></item><item><title><![CDATA[Reply to ungewollter Zugriff auf private member on Sat, 22 Dec 2012 23:38:44 GMT]]></title><description><![CDATA[<p>Hallo firefly + CocoEi,</p>
<p>das ging ja schnell.</p>
<p>firefly schrieb:</p>
<blockquote>
<p>bei dir ist die Implementierung des &quot;+ Operators&quot; ein Member der Klasse und somit kann diese auch auf private Member zugreifen.</p>
</blockquote>
<p>... natürlich jetzt wo du's sagst.</p>
<p>Vielen Dank für die Antworten <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>Aiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282542</guid><dc:creator><![CDATA[Aiko]]></dc:creator><pubDate>Sat, 22 Dec 2012 23:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to ungewollter Zugriff auf private member on Sun, 23 Dec 2012 00:18:19 GMT]]></title><description><![CDATA[<p>CocoEi schrieb:</p>
<blockquote>
<p>meines er achtens müsste da noch ein privat über dem double Re. <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="😉"
    /><br />
coco</p>
</blockquote>
<p>Das default scoping von einer class in C++ ist private.<br />
Das default scoping eines structs in C++ ist public.</p>
<p>Bei class ist alles, sofern nichts anderes explizit angegeben, private.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282547</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Sun, 23 Dec 2012 00:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to ungewollter Zugriff auf private member on Sun, 23 Dec 2012 12:22:39 GMT]]></title><description><![CDATA[<p>Mal davon abgesehen...</p>
<p>Aiko schrieb:</p>
<blockquote>
<pre><code>class Komplex
{
  double Re;
  double Im;
public:

  /*
  ...
  */

  // Ueberladung der Addition

  Komplex operator+(const Komplex &amp;z ) const
  {
	Komplex sum;
	sum.Re = this -&gt; Re + z.Re; // Zugriff auf Re-Member vom Objekt sum
	sum.Im = this -&gt; Im + z.Im; // do.
	
	return sum;
  }

};
</code></pre>
</blockquote>
<p>...ist das nicht der Weisheit letzter Schluss bzgl Implementierung eines eigenen Komplex-Typs. Erst mal frage ich mich, wie sinnvoll es ist, Re und Im private zu machen. Eine komplexe Zahl besteht nun mal aus Real- und Imaginärteil. Das ist kein &quot;Implementierungsdetail&quot;, dass man vor Zugriff schützen müsste, um irgendwelche Invarianten einzuhalten. Dann ist auch bekannt, dass operator+ in so einer Situation als freie Funktion gewisse Vorteile bietet. Zum Beispiel erlaubt mir folgendes</p>
<pre><code class="language-cpp">struct komplex
{
  double re, im;

  komplex(double r=0, double i=0)
  : re(r), im(i)
  {}
};

inline komplex operator+(komplex const&amp; a, komplex const&amp; b)
{
  return {a.re+b.re, a.im+b.im};
}
</code></pre>
<p>dann folgende Operationen:</p>
<pre><code class="language-cpp">int main()
{
  komplex z {2,3};
  auto a = z + z;
  auto b = z + 3.14;
  auto c = 2.718 + z;
}
</code></pre>
<p>da sogar die 2.718 durch den impliziten Konstruktor von komplex zu einem komplex-Objekt wird und anschließend operator+(komplex,komplex) aufgerufen werden kann. Das klappt mit operator+ als Elementfunktion nicht, da die linke Seite da schon ein komplex-Objekt sein müsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2282614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2282614</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 23 Dec 2012 12:22:39 GMT</pubDate></item></channel></rss>