<?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[private oder protected?]]></title><description><![CDATA[<p>Hallo nochmal! <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>Mir fällt es immer noch ein bisschen schwer zu erkennen, wann ich Membervariablen private, und wann protected setzen soll.</p>
<p>Beispiel aus meinem Code. Es existiert eine Klasse Fahrzeug. Von dieser erben nun die Klasse PKW und Fahrrad.</p>
<pre><code>class Fahrzeug
{
public:
	Fahrzeug();
	Fahrzeug(const string sName);
	Fahrzeug(const string sName, const double dMaxSpeed);
	virtual ~Fahrzeug();
	void vAusgabe();     //Fahrzeugdaten auslesen
	void vAbfertigung(); //Fahrzeugstatus aktualsieren
protected:
	double p_dMaxGeschwindigkeit; //Maximalgeschwindigkeit
	double p_dGesamtStrecke;    //Gesamte zurückgelegte Strecke
	double p_dGesamtZeit;       //Gesamtzeit
	double p_dZeit;             //Zeit seit letzer Bearbeitung
private:
	string p_sName; // Name des Fahrzeugs
	int p_iID;      // ID des Fahrzeugs
	static int p_iMaxID;	

	void vInitialisierung(); //Init der Werte	
};
</code></pre>
<p>Was wäre hier klug? Habe schon 4 Member auf protected gesetzt? Welche Funktionen sollte man als virtual setzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328362/private-oder-protected</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 17:18:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328362.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Oct 2014 13:52:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to private oder protected? on Sun, 05 Oct 2014 13:53:50 GMT]]></title><description><![CDATA[<p>Hallo nochmal! <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>Mir fällt es immer noch ein bisschen schwer zu erkennen, wann ich Membervariablen private, und wann protected setzen soll.</p>
<p>Beispiel aus meinem Code. Es existiert eine Klasse Fahrzeug. Von dieser erben nun die Klasse PKW und Fahrrad.</p>
<pre><code>class Fahrzeug
{
public:
	Fahrzeug();
	Fahrzeug(const string sName);
	Fahrzeug(const string sName, const double dMaxSpeed);
	virtual ~Fahrzeug();
	void vAusgabe();     //Fahrzeugdaten auslesen
	void vAbfertigung(); //Fahrzeugstatus aktualsieren
protected:
	double p_dMaxGeschwindigkeit; //Maximalgeschwindigkeit
	double p_dGesamtStrecke;    //Gesamte zurückgelegte Strecke
	double p_dGesamtZeit;       //Gesamtzeit
	double p_dZeit;             //Zeit seit letzer Bearbeitung
private:
	string p_sName; // Name des Fahrzeugs
	int p_iID;      // ID des Fahrzeugs
	static int p_iMaxID;	

	void vInitialisierung(); //Init der Werte	
};
</code></pre>
<p>Was wäre hier klug? Habe schon 4 Member auf protected gesetzt? Welche Funktionen sollte man als virtual setzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420847</guid><dc:creator><![CDATA[Krachi]]></dc:creator><pubDate>Sun, 05 Oct 2014 13:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Sun, 05 Oct 2014 14:58:05 GMT]]></title><description><![CDATA[<p>Grundregel: Nie protected benutzen. Wenn eine erbende Klasse darauf Zugriff haben kann, dann kann man es in der Regel auch public machen. Mir fällt aus dem Kopf nicht mal ein Beispiel ein bei dem protected sinnvoll wäre, auch wenn es bestimmt irgendetwas gibt. Ist aber wie gesagt sehr, sehr selten.</p>
<p>Zusatztipp: Versuche nicht die &quot;Realität&quot; in deiner Programmstruktur abzubilden. Nur weil alle Frauen Säugetiere sind und der Inhalt ihrer Handtaschen privat ist, heißt das nicht dass du dein Programm auch so aufbauen musst. Klassen und private/public dienen in erster Linie dazu Objekte (insbesondere Ressourcen-Handles wie Sockets/Speicher etc.) die man auch wirklich vor äußerem Zugriff schützen will zu verstecken. Wenn du einfach nur eine Sammlung von Eigenschaften hast dann nimm einfach ein struct. Das ist völlig ausreichend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420859</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 05 Oct 2014 14:58:05 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Sun, 05 Oct 2014 15:11:45 GMT]]></title><description><![CDATA[<p>Das ist leider in einer Aufgabe gefordert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /><br />
Warum ist protected denn so furchtbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420860</guid><dc:creator><![CDATA[Krachi]]></dc:creator><pubDate>Sun, 05 Oct 2014 15:11:45 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Sun, 05 Oct 2014 15:43:51 GMT]]></title><description><![CDATA[<p>Krachi schrieb:</p>
<blockquote>
<p>Warum ist protected denn so furchtbar?</p>
</blockquote>
<p>Gegenfrag: Warum solltest du es jemals benutzen wollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420867</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 05 Oct 2014 15:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Sun, 05 Oct 2014 15:51:18 GMT]]></title><description><![CDATA[<p>protected ist nicht furchbar, es bringt aber auch nicht so viel. private bei einem Member begrenzt den Kreis derer, die davon abhängen, auf die Klassenmember und friends der Klasse, public begrenzt gar nicht. Auf wen begrenzt protected? Eigentlich auf abgeleitete Klassen, aber da Ableiten unbegrenzt möglich ist, ist auch der Abhängigkeitsradius von protected effektiv unbegrenzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420870</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sun, 05 Oct 2014 15:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Mon, 06 Oct 2014 06:19:38 GMT]]></title><description><![CDATA[<p>protected ist sinnvoll, wenn eine Klasse als reine Basisklasse gedacht ist. Dann macht man Konstruktor (und u.U. Destruktor) protected.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420926</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Mon, 06 Oct 2014 06:19:38 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Mon, 06 Oct 2014 10:42:34 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>protected ist sinnvoll, wenn eine Klasse als <s>reine</s> Basisklasse gedacht ist. Dann macht man <s>Konstruktor (und u.U. Destruktor)</s> das protected was nicht publich sein soll, die abgeleiteten Klassen aber verwenden können müssen.</p>
</blockquote>
<p>FTFY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420955</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 06 Oct 2014 10:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Mon, 06 Oct 2014 11:13:08 GMT]]></title><description><![CDATA[<p>War ja mal wieder klar, dass von dir so ein dummer Kommentar kommt. Ich werd mir einfach komplett das Posten in diesem Unterforum sparen, wenn man sich dann sone Kacke anhoeren muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420959</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Mon, 06 Oct 2014 11:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Mon, 06 Oct 2014 12:21:28 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Grundregel: Nie protected benutzen. Wenn eine erbende Klasse darauf Zugriff haben kann, dann kann man es in der Regel auch public machen. Mir fällt aus dem Kopf nicht mal ein Beispiel ein bei dem protected sinnvoll wäre, auch wenn es bestimmt irgendetwas gibt. Ist aber wie gesagt sehr, sehr selten.</p>
</blockquote>
<p>Was ist denn mit den ganzen GUI-Generatoren wie Qt oder wxWidgets? Da wird auch eine Basisklasse erzeugt, die alle GUI-Elemente enthält. Die GUI-Elemente werden dann protected vererbt.</p>
<p>Ergebnis: Im editor kann der user die GUI schön anpassen und die Basisklasse generieren lassen, in der geerbten Klasse kann er auf die GUI-Elemente zugreifen, wobei die GUI-Elemente ja für andere Klasse nicht interessant sind (und daher private)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420970</guid><dc:creator><![CDATA[Qtler]]></dc:creator><pubDate>Mon, 06 Oct 2014 12:21:28 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Mon, 06 Oct 2014 12:29:54 GMT]]></title><description><![CDATA[<p>Ich benutze protected immer, wenn ich eine Klasse ableitbar gestalte, aber die protected Inhalte nicht public machen will, diese aber von einer (sinnvollen) abgeleiteten Klasse benötigt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2420973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2420973</guid><dc:creator><![CDATA[randa]]></dc:creator><pubDate>Mon, 06 Oct 2014 12:29:54 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Thu, 09 Oct 2014 20:08:13 GMT]]></title><description><![CDATA[<p>Ich habe eine gute Seite gefunden wo dies erklärt wird, unter Zugriffstecht:<br />
<a href="http://www.c-plusplus.net/forum/posting.php?mode=reply" rel="nofollow">http://www.c-plusplus.net/forum/posting.php?mode=reply</a></p>
<p>Sobald die abgeleitete Klasse für eine berechnung oder so die membervariablen der basisklasse benötigt kann man sie als protected setzen, um so auf sie zuzugreifen. Andernfalls müsste man sie public setztn wobei aber JEDER zugreifen darf. Das gleiche gilt für die Methoden.</p>
<p>Lg<br />
Christof</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2421523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2421523</guid><dc:creator><![CDATA[Christof_12]]></dc:creator><pubDate>Thu, 09 Oct 2014 20:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to private oder protected? on Fri, 10 Oct 2014 07:31:31 GMT]]></title><description><![CDATA[<p>Christof_12 schrieb:</p>
<blockquote>
<p>Ich habe eine gute Seite gefunden wo dies erklärt wird, unter Zugriffstecht:<br />
<a href="http://www.c-plusplus.net/forum/posting.php?mode=reply" rel="nofollow">http://www.c-plusplus.net/forum/posting.php?mode=reply</a></p>
<p>Sobald die abgeleitete Klasse für eine berechnung oder so die membervariablen der basisklasse benötigt kann man sie als protected setzen, um so auf sie zuzugreifen. Andernfalls müsste man sie public setztn wobei aber JEDER zugreifen darf. Das gleiche gilt für die Methoden.</p>
<p>Lg<br />
Christof</p>
</blockquote>
<p>Oder für jeden daten member in der basis klasse einen getter und eventuell auch setter schreiben (diese methoden könnten dan protected sein, wenn nur abgleitete klassen daruf zugreifen sollen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2421569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2421569</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Fri, 10 Oct 2014 07:31:31 GMT</pubDate></item></channel></rss>