<?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[protected]]></title><description><![CDATA[<p>Verstehe ich es richtig, dass Attribute und Methoden, die als protected deklariert sind, gar nicht von der eigenen Klasse, sondern nur von abgeleiteten Klassen verwendet werden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286826/protected</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 17:24:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286826.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 May 2011 08:35:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 08:35:10 GMT]]></title><description><![CDATA[<p>Verstehe ich es richtig, dass Attribute und Methoden, die als protected deklariert sind, gar nicht von der eigenen Klasse, sondern nur von abgeleiteten Klassen verwendet werden können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064450</guid><dc:creator><![CDATA[protected87]]></dc:creator><pubDate>Tue, 17 May 2011 08:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 08:38:56 GMT]]></title><description><![CDATA[<p>Nein. Die eigene Klassen kann natürlich alles benutzen. Das wichtige an protected ist, dass auch abgeleitete Klassen dran dürfen, aber - im Gegensatz zu public - sonst niemand.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064456</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 17 May 2011 08:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 08:47:41 GMT]]></title><description><![CDATA[<p>verstehe. Wenn ich eine Klasse habe und möchte, dass sie über einen Standardkonstruktor verfügt, dann mus sich doch einach keinen erstellen, oder? Nur wenn ich keinen Konstruktor erstelle, hat die Klasse einen Standardkonstruktor, richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064466</guid><dc:creator><![CDATA[protected87]]></dc:creator><pubDate>Tue, 17 May 2011 08:47:41 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 08:51:32 GMT]]></title><description><![CDATA[<p>protected87 schrieb:</p>
<blockquote>
<p>verstehe. Wenn ich eine Klasse habe und möchte, dass sie über einen Standardkonstruktor verfügt, dann mus sich doch einach keinen erstellen, oder? Nur wenn ich keinen Konstruktor erstelle, hat die Klasse einen Standardkonstruktor, richtig?</p>
</blockquote>
<p>Wenn du garkeinen Konstruktor deklarierst, dann generiert der Compiler dir automatisch einen Default-Ctor und einen Copy-Ctor. Wenn du den Copy-Ctor deklarierst, generiert er dir keinen weiteren Ctor. Wenn du irgendeinen anderen Ctor deklarierst, dann wird der Copy-Ctor generiert, nicht aber der default-Ctor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064471</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 17 May 2011 08:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 09:31:17 GMT]]></title><description><![CDATA[<p>danke. wenn ich jetzt eine klasse erstellen, von der geerbt wird, dann sieht das so aus:</p>
<pre><code class="language-cpp">class Basis 
{
public:	
	string get_str(void){return str;}
	string type(void) {return &quot;Ich bin die Basis&quot;;}
	Basis(string s);
private:
	string str;
protected:
	string sec;

};

Basis::Basis(string s)
{
	str = s;
	sec = &quot;geheim&quot;;
}

class Child : public Basis
{
public:
	Child(string s);
	string type(void) {return &quot;Ich bin das Kind&quot;;}
};

Child::Child(string s) : Basis(s)
{
}

int main()
{
	Basis* b = new Basis(&quot;Basis&quot;);
	Child* c = new Child(&quot;Kind&quot;);

	cout &lt;&lt; c-&gt;get_str();
	return 0;
}
</code></pre>
<p>Was passiert beim Aufruf Child* c = new Child(&quot;Kind&quot;);? Wir die Variable &quot;str&quot; von Basis mit &quot;Kind&quot; gefüllt oder die unsichtbar geerbte Variable &quot;str&quot; von Child mit &quot;Kind&quot; gefüllt?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064505</guid><dc:creator><![CDATA[protected87]]></dc:creator><pubDate>Tue, 17 May 2011 09:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 09:32:38 GMT]]></title><description><![CDATA[<p>und wenn ich Child private von Basis erben lasse, wird dann einfach alles private also auch die publich Attribute oder was hat das zur Folge?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064507</guid><dc:creator><![CDATA[protected87]]></dc:creator><pubDate>Tue, 17 May 2011 09:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 09:50:15 GMT]]></title><description><![CDATA[<p>protected87 schrieb:</p>
<blockquote>
<p>und wenn ich Child private von Basis erben lasse, wird dann einfach alles private also auch die publich Attribute oder was hat das zur Folge?</p>
</blockquote>
<p>Wieso probierst Du es nicht einfach mal selbst aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064513</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 17 May 2011 09:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 11:16:32 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>protected87 schrieb:</p>
<blockquote>
<p>verstehe. Wenn ich eine Klasse habe und möchte, dass sie über einen Standardkonstruktor verfügt, dann mus sich doch einach keinen erstellen, oder? Nur wenn ich keinen Konstruktor erstelle, hat die Klasse einen Standardkonstruktor, richtig?</p>
</blockquote>
<p>Wenn du garkeinen Konstruktor deklarierst, dann generiert der Compiler dir automatisch einen Default-Ctor und einen Copy-Ctor. Wenn du den Copy-Ctor deklarierst, generiert er dir keinen weiteren Ctor. Wenn du irgendeinen anderen Ctor deklarierst, dann wird der Copy-Ctor generiert, nicht aber der default-Ctor.</p>
</blockquote>
<p>Einen Destruktor und einen Zuweisungsoperator erstellt er doch auch!? Wobei er sie auch nur erstellt wenn sie benötigt werden, was natürlich sehr schnell vorkommt.</p>
<p>@TE:<br />
Wenn deine Klasse Datenelemente von integrierten Typen enthält, solltest du allerdings immer deinen eigenen Standardkonstruktor deklarieren und definieren, denn sonst werden je nach Kontext, die Datenelemente( von integrierten Typen ) nicht initialisiert.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064551</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 17 May 2011 11:16:32 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 13:18:45 GMT]]></title><description><![CDATA[<p>Vielleicht sollte noch erwähnt werden, dass man mit protected nur Zugriff auf die die protected Methoden/Variablen des this Objekts hat. Auf andere Instanzen kann man nämlich nicht zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064662</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 17 May 2011 13:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 13:28:15 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Vielleicht sollte noch erwähnt werden, dass man mit protected nur Zugriff auf die die protected Methoden/Variablen des this Objekts hat. Auf andere Instanzen kann man nämlich nicht zugreifen.</p>
</blockquote>
<p>Doch, dass kann man schon:</p>
<pre><code class="language-cpp">class A
{
protected:
    int a;
public:
    void assign(A const &amp; other)
    { 
        a = other.a; //other ist andere Instanz
    }
};

int main()
{
    A a1;
    A a2;

    a1.assign(a2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2064669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064669</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 17 May 2011 13:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 13:34:00 GMT]]></title><description><![CDATA[<p>Seltsam. Ich kann mich da an einen Fall erinnern, in dem das nicht ging. Auf Nachfrage hat man mir gesagt, dass das nicht geht. Jetzt bin ich verwirrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064684</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 17 May 2011 13:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 15:20:49 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Seltsam. Ich kann mich da an einen Fall erinnern, in dem das nicht ging. Auf Nachfrage hat man mir gesagt, dass das nicht geht. Jetzt bin ich verwirrt.</p>
</blockquote>
<p>Das wäre schlecht, wenn das nicht ginge, weil man dann nur schwerlich Assignment-Operatoren schreiben könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064756</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 17 May 2011 15:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to protected on Tue, 17 May 2011 16:08:22 GMT]]></title><description><![CDATA[<p>protected87 schrieb:</p>
<blockquote>
<p>Was passiert beim Aufruf Child* c = new Child(&quot;Kind&quot;);? Wir die Variable &quot;str&quot; von Basis mit &quot;Kind&quot; gefüllt oder die unsichtbar geerbte Variable &quot;str&quot; von Child mit &quot;Kind&quot; gefüllt?</p>
</blockquote>
<p>Es gibt nur eine Variable <code>str</code> in deinem Objekt - die von Basis geerbte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064783</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 17 May 2011 16:08:22 GMT</pubDate></item></channel></rss>