<?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[Vererbung]]></title><description><![CDATA[<p>Hallo Leute,<br />
bei einer abgeleiteten Klasse ist es doch so, dass diese die Eigenschaften der Basisklasse erbt, einschränken kann, aber nicht ausweiten kann. Habe ich das richtig verstanden?</p>
<p>Der folgende Code sorgt aber dafür, dass die &quot;Motor&quot;-Eigenschaft, die ursprünglich protected war, nun einen public-Zugriff erlaubt. Habe ich da einen Denkfehler gemacht?</p>
<pre><code class="language-cpp">class car
{
protected: string motor;
};
class trike:  public car
{
public: using car::motor;
};
int main()
{
    trike traum;
    traum.motor =&quot;2.0 l, 100 PS&quot;;   // Zugriff, obwohl durch Basisklasse &quot;car&quot; als protected deklariert?????
    cout &lt;&lt; traum.motor &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Danke schon mal für Eure Hilfe...<br />
Jörg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233453/vererbung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 21:59:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233453.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Feb 2009 20:21:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 20:21:51 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
bei einer abgeleiteten Klasse ist es doch so, dass diese die Eigenschaften der Basisklasse erbt, einschränken kann, aber nicht ausweiten kann. Habe ich das richtig verstanden?</p>
<p>Der folgende Code sorgt aber dafür, dass die &quot;Motor&quot;-Eigenschaft, die ursprünglich protected war, nun einen public-Zugriff erlaubt. Habe ich da einen Denkfehler gemacht?</p>
<pre><code class="language-cpp">class car
{
protected: string motor;
};
class trike:  public car
{
public: using car::motor;
};
int main()
{
    trike traum;
    traum.motor =&quot;2.0 l, 100 PS&quot;;   // Zugriff, obwohl durch Basisklasse &quot;car&quot; als protected deklariert?????
    cout &lt;&lt; traum.motor &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Danke schon mal für Eure Hilfe...<br />
Jörg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658140</guid><dc:creator><![CDATA[JoergL67]]></dc:creator><pubDate>Wed, 04 Feb 2009 20:21:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:03:54 GMT]]></title><description><![CDATA[<p>Du machst da den öffentlichen Zugriff explizit mit using erlaubt..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658158</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:03:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:11:22 GMT]]></title><description><![CDATA[<p>Ist es wirklich erlaubt, Zugriffsspezifizierer in abgeleiteten Klassen aufzulockern? Ich dachte, einschränken ginge, aber das verwundert mich jetzt ein wenig, da es das Prinzip der Kapselung verletzt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658163</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:15:37 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ist es wirklich erlaubt, Zugriffsspezifizierer in abgeleiteten Klassen aufzulockern? Ich dachte, einschränken ginge, aber das verwundert mich jetzt ein wenig, da es das Prinzip der Kapselung verletzt...</p>
</blockquote>
<p>man kann es ja mit gewalt verletzen mit</p>
<pre><code class="language-cpp">class trike:  public car 
{ 
public: 
  string&amp; getMotor()
  {
    return motor;
  }
};
</code></pre>
<p>da ist es nur konsequent, die seltsame using-geschichte nicht einzuschränken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658167</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:18:24 GMT]]></title><description><![CDATA[<p>Daran dachte ich auch, als ich meinen Beitrag geschrieben habe. Aber da ist immerhin eine Indirektion vorhanden, während man bei <code>using</code> direkt auf das Objekt zugreift.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658169</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:18:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:23:35 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Aber da ist immerhin eine Indirektion vorhanden</p>
</blockquote>
<p>äh. nein.</p>
<p>faktisch wird ne referenz auf jedem compiler, den ich kenne, als zeiger implementiert. hier mit inline wir die wegoptimiert. faktisch ist da keine indirektion, wenn der compiler nicht ultradumm ist.<br />
und der standard sagt gar nix, wie das zu geschehen hat, nur daß es sich anfühlen muß, als sei da keine indirektion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658173</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:28:39 GMT]]></title><description><![CDATA[<p>Ich meinte das natürlich aus Sicht des Codes und nicht des kompilierten Programmes. Von Klassen kann dann eh keine Rede mehr sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658177</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:28:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 21:43:57 GMT]]></title><description><![CDATA[<p>das feature/bug zu verbieten würde nichts bringen. compiler und mensch können es fein ignorieren. und die praxis zeigt, daß menschen, die müllcode wirklich schreiben wollen, das auch schaffen.<br />
ich vermute, daß dieses using fast immer müllig ist. naja, nicht immer. private erblichkeit kommt ja auch manchmal sinnvoll vor. sogar goto. das ist so ein feature, das ich einmal in 10 jahren brauche. ich könnte mir vorstellen, daß es deutlichen mehrwert bietet, um in templates geerbte typen wie iteratoren mit einem haufen trivialfunktionen schnell hochzugeben. also nix wichtiges, nur tipparbeit einsparen. das macht mich traurig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658186</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 04 Feb 2009 21:43:57 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 22:00:07 GMT]]></title><description><![CDATA[<p>aber das Verhalten des Codes ändert sich nicht, wenn ich das &quot;using&quot; weglasse. Dann ist der Zugriff immer noch möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658189</guid><dc:creator><![CDATA[JoergL67]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 22:08:19 GMT]]></title><description><![CDATA[<p>Steht denn das car::motor immernoch da? - Nimm es doch einfach weg.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658195</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 22:14:52 GMT]]></title><description><![CDATA[<p>ja, das steht noch da. Ich versuche mir ja nur den Zusammenhang mit der Vererbung herzustellen.<br />
Hebel ich denn definitiv die protected-Eigenschaft aus, in dem ich die<br />
Eigenschaft in der Sub-Class so definiere?<br />
public: car::motor;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658199</guid><dc:creator><![CDATA[JoergL67]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 22:15:50 GMT]]></title><description><![CDATA[<p>JoergL67 schrieb:</p>
<blockquote>
<p>ja, das steht noch da. Ich versuche mir ja nur den Zusammenhang mit der Vererbung herzustellen.<br />
Hebel ich denn definitiv die protected-Eigenschaft aus, in dem ich die<br />
Eigenschaft in der Sub-Class so definiere?<br />
public: car::motor;</p>
</blockquote>
<p>Ja..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658201</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung on Wed, 04 Feb 2009 22:16:40 GMT]]></title><description><![CDATA[<p>okay. Groschen ist endlich gefallen.<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1658202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1658202</guid><dc:creator><![CDATA[JoergL67]]></dc:creator><pubDate>Wed, 04 Feb 2009 22:16:40 GMT</pubDate></item></channel></rss>