<?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[legaler illegaler Zugriff? Kopierkonstruktor]]></title><description><![CDATA[<p>Wieso ist folgender Code legal?</p>
<pre><code class="language-cpp">Point::Point(const Point&amp; p) : x(p.x),
			       y(p.y) {}
</code></pre>
<p>Wenn in der Klassendeklaration</p>
<pre><code class="language-cpp">class Point {
	const int x;
	const int y;

public:
	Point(int,int);
	Point(const Point&amp;);
	int get_x();
	int get_y();
};
</code></pre>
<p>steht, also sowohl x als auch y private sind (und wieso ist das die einzige Möglichkeit den Kopierkonstruktor zu implementieren? Wieso kann ich nicht die getter benutzen?)</p>
<p>danke für eure Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281618/legaler-illegaler-zugriff-kopierkonstruktor</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 15:07:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281618.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Feb 2011 19:37:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 19:37:03 GMT]]></title><description><![CDATA[<p>Wieso ist folgender Code legal?</p>
<pre><code class="language-cpp">Point::Point(const Point&amp; p) : x(p.x),
			       y(p.y) {}
</code></pre>
<p>Wenn in der Klassendeklaration</p>
<pre><code class="language-cpp">class Point {
	const int x;
	const int y;

public:
	Point(int,int);
	Point(const Point&amp;);
	int get_x();
	int get_y();
};
</code></pre>
<p>steht, also sowohl x als auch y private sind (und wieso ist das die einzige Möglichkeit den Kopierkonstruktor zu implementieren? Wieso kann ich nicht die getter benutzen?)</p>
<p>danke für eure Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016736</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Fri, 04 Feb 2011 19:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 19:45:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Wieso ist folgender Code legal?</p>
</blockquote>
<p>Die Frage gab es erst vor kurzem:<br />
<a href="http://www.c-plusplus.net/forum/281468" rel="nofollow">http://www.c-plusplus.net/forum/281468</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016742</guid><dc:creator><![CDATA[Sk4terb0i]]></dc:creator><pubDate>Fri, 04 Feb 2011 19:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 19:46:15 GMT]]></title><description><![CDATA[<p>Hi,</p>
<ol>
<li>weil Zugriffe auf private Member eines anderen Objekts derselben Klasse grundsätzlich erlaubt sind.</li>
<li>weil man in Elementinitialisierern keine Methoden aufrufen darf <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="🙂"
    /> Tiefer gehendes dazu weiß ich leider nicht.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2016743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016743</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 04 Feb 2011 19:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 19:48:39 GMT]]></title><description><![CDATA[<p>Die Klasse Point darf natürlich auf ihre eigenen Member zugreifen. Auch dann wenn sie privat sind. Damit sind sie von außen nicht zugreifbar, aber von innen natürlich schon.</p>
<p>Da du Point als konstantes Objekt übergibst, können so oder so auch nur konstante Funktionen ausgeführt werden. Also mach die Getter auch konstant. Das gehört übrigens zum guten Stil und du solltest dir das ohnehin angewöhnen.</p>
<pre><code class="language-cpp">class Point {
    const int x;
    const int y;

public:
    Point(int, int);
    Point(const Point&amp;);

    int get_x() const; // konstant
    int get_y() const; // konstant
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2016745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016745</guid><dc:creator><![CDATA[asdasd]]></dc:creator><pubDate>Fri, 04 Feb 2011 19:48:39 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 19:57:58 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

class Point
{
private:
	int x_;
	int y_;

public:
	Point(int x = 0, int y = 0) 
		: x_(x), y_(y) 
	{
	}

	Point(const Point&amp; point) 
		: x_(point.getX()), y_(point.getY()) 
	{
	}

	void setX(int x) { x_ = x; }
	void setY(int y) { y_ = y; }

	void set(int x, int y) { setX(x); setY(y); }

	int getX() const { return x_; }
	int getY() const { return y_; }
};

void printPoint(const Point&amp; point);

int main()
{
	Point p; // Standardkonstruktor

	printPoint(p);

	p = Point(10, 12);

	printPoint(p);

	p.setX(100);
	p.setY(20);

	printPoint(p);

	p.set(500, 12);

	printPoint(p);

	Point p2(p);

	printPoint(p2);

	return 0;
}

void printPoint(const Point&amp; point)
{
	std::cout &lt;&lt; point.getX() &lt;&lt; &quot;, &quot; &lt;&lt; point.getY() &lt;&lt; std::endl;
}
</code></pre>
<p>Kompiliert in MSVC 2010.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016750</guid><dc:creator><![CDATA[asdasd]]></dc:creator><pubDate>Fri, 04 Feb 2011 19:57:58 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 19:58:38 GMT]]></title><description><![CDATA[<p>ok, danke</p>
<p>besonders das mit den const gettern war lernenswert. (jetzt funktionieren auch die getter in der Elementinitliste)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016751</guid><dc:creator><![CDATA[Jud4s]]></dc:creator><pubDate>Fri, 04 Feb 2011 19:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 20:05:15 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<ol start="2">
<li>weil man in Elementinitialisierern keine Methoden aufrufen darf <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="🙂"
    /> Tiefer gehendes dazu weiß ich leider nicht.</li>
</ol>
</blockquote>
<p>Das, das du da ansprichst, nennt sich <strong>Initialisierungsliste</strong>, und man kann in dieser sehr wohl Methoden aufrufen.</p>
<p>Der Zugriffsmodifizierer private sagt, dass ein Zugriff von <strong>außen</strong> (außerhalb der eigenen Klasse) nicht erlaubt ist, und deine Methode bzw. Konstruktor gehört ja zu dieser Klasse, und ist somit kein Zugriff von außen.</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016754</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 04 Feb 2011 20:05:15 GMT</pubDate></item><item><title><![CDATA[Reply to legaler illegaler Zugriff? Kopierkonstruktor on Fri, 04 Feb 2011 20:54:18 GMT]]></title><description><![CDATA[<p>Ok, mein Fehler.</p>
<p>Elementinitialisierungsliste oder eben Elementinitialisierer kenne ich aber synonym als Begriffe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016778</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 04 Feb 2011 20:54:18 GMT</pubDate></item></channel></rss>