<?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[Schulaufgabe und ein bisschen Objektorientierte Programmierung]]></title><description><![CDATA[<p>Hallo liebe Gemeinde.<br />
Wir haben die Schulaufgabe nun geschrieben. Dank euch und dem Forum war es zwar kein Kinderspiel, aber ein gutes Unterfangen.<br />
Gott sei Dank habe ich so viel bzgl. Strings (also Datentyp String in C++) getan.<br />
Eine der Fragen war wie folgt:<br />
Nennen Sie zwei Unterschiede zwischen dem Datentyp char und dem Datentyp string.<br />
Darauf habe ich geschrieben:<br />
 char muss mit einem Zahlenwert deklariert werden, string jedoch nicht.<br />
Bsp. für char: char Text [1000];<br />
Bsp. für string: string Satz,<br />
 Eine als string deklarierte Variable ist von Haus aus 32 Byte groß, char jedoch so groß, welchen Zahlenwert man ihm zufügt.<br />
Eine andere Frage war wie folgt:<br />
Wie lautet der Befehl, um eine als string deklarierte Variable einzulesen?<br />
Ich habe darauf geschrieben:<br />
string Text;<br />
getline(cin, Text);<br />
Dann kam folgende Frage:<br />
Schreiben Sie ein Programm, dass das Alphabet in Kleinbuchstaben ausgibt. Verwenden Sie die Funktion putchar().<br />
Darauf habe ich geschrieben:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;cstdio&gt;

int main()
{
	char c;

	for (c = 'a'; c&lt;='z'; c++) 
		putchar(c);

	return 0;
}
</code></pre>
<p>Dann kam folgende Frage:<br />
Schreiben Sie ein Programm, das erst die eine Hälfte eines Wortes einliest, dann die zweite Hälfte eines Wortes und als Ausgabe das zusammengefügte Wort ausgibt. Verwenden Sie den Datentyp string.<br />
Darauf habe ich geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	string str_1, str_2, str_3;

	cout &lt;&lt; &quot;Geben Sie das erste Wort ein!\n&quot;;
	getline(cin, str_1);

	cout &lt;&lt; &quot;Geben Sie das zweite Wort ein!\n&quot;;
	getline(cin, str_2);

	str_3 = str_1 + str_2;

	cout &lt;&lt; &quot;Zusammengefuegt heisst das Wort:\n&quot;;
	cout &lt;&lt; str_3 &lt;&lt; &quot;\n&quot;;

	return 0;
}
</code></pre>
<p>Dann kam noch die Frage, welche string Funktionen zu ostream gehören und welche zu istream. Die war auch einfach.<br />
Als nächstes kamen dann Pointer dran.<br />
Eine Aufgabe darin bestand darin einen Taschenrechner über Pointer zu programmieren.<br />
Das habe ich geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Addition.h&quot;
#include &quot;Subtraktion.h&quot;
#include &quot;Multiplikation.h&quot;
#include &quot;Division.h&quot;
using namespace std;

int main()
{
	int number;

	do
	{
		float x, y,z;
		float *px = &amp;x;
		float *py = &amp;y;
		float *pz = &amp;z;

		cout &lt;&lt; &quot;Welche Rechenoperation wollen Sie durchfuehren?\n&quot;;
		cout &lt;&lt; &quot;(1) Addition \n&quot;;
		cout &lt;&lt; &quot;(2) Subtraktion \n&quot;;
		cout &lt;&lt; &quot;(3) Multiplikation \n &quot;;
		cout &lt;&lt; &quot;(4) Division \n&quot;;
		cout &lt;&lt; &quot;(0) Exit! \n&quot;;
		cin  &gt;&gt; number;

		switch(number)
		{
			case 1:
				cout &lt;&lt; &quot;Addition!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = *px + *py;

				cout &lt;&lt; *px &lt;&lt; &quot; + &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 2:
				cout &lt;&lt; &quot;Subtraktion!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = *px - *py;

				cout &lt;&lt; *px &lt;&lt; &quot; - &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 3:
				cout &lt;&lt; &quot;Multiplikation!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = (*px) * (*py);

				cout &lt;&lt; *px &lt;&lt; &quot; * &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 4:
				cout &lt;&lt; &quot;Division!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = (*px) / (*py);

				cout &lt;&lt; *px &lt;&lt; &quot; / &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 0:
				cout &lt;&lt; &quot;Exit durch Abbruch!\n&quot;;
				break;

		}
	}while(number!=0);

	return 0;
}
</code></pre>
<p>Dann hätte man über Pointer die Uhrzeit, das Datum und den Wochentag ausgeben sollen.<br />
Das habe ich geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;ctime&gt;
#include &lt;cassert&gt;
using namespace std;

const char* wochentag_name(int index)
			{
				assert (0&lt;=index &amp;&amp; index&lt;7);
				static const char* namen[] = {
					&quot;Sonntag&quot;,
					&quot;Montag&quot;,
					&quot;Dienstag&quot;,
					&quot;Mittwoch&quot;,
					&quot;Donnerstag&quot;,
					&quot;Freitag&quot;, 
					&quot;Samstag&quot;
				};
				return namen[index];
			};

int main()
{
	time_t Uhrzeit;
	tm *pUhrzeit;
	Uhrzeit = time(0);
	pUhrzeit = localtime (&amp;Uhrzeit);

	cout &lt;&lt; wochentag_name(pUhrzeit-&gt;tm_wday) &lt;&lt; endl; //Wochentag
	cout &lt;&lt; pUhrzeit -&gt; tm_mday &lt;&lt; '.' &lt;&lt; pUhrzeit -&gt; tm_mon+1 &lt;&lt; '.' &lt;&lt; pUhrzeit -&gt; tm_year + 1900 &lt;&lt; endl; //Datum
	cout &lt;&lt; pUhrzeit -&gt; tm_hour &lt;&lt; ':' &lt;&lt; pUhrzeit -&gt; tm_min   &lt;&lt; ':' &lt;&lt; pUhrzeit -&gt; tm_sec &lt;&lt; endl; //Uhrzeit
	cout &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Wo ich wohl bisschen abgeloost habe, war bei der Erklärung von Zeigerarithmetik<br />
Aber mei … eine 5 oder 6 wird es nicht mehr … mit einer 4 bin ich schon zufrieden.<br />
Aber euch an der Stelle mal ein Danke… ohne euch hätte ich es glaube ich nicht so gut hinbekommen.<br />
So als nächstes ist jetzt Objektorientierung dran.<br />
Bei meiner Recherche bin ich auf <a href="http://www.wikibooks.org/wiki/C++-Programmierung:_Klassen" rel="nofollow">www.wikibooks.org/wiki/C++-Programmierung:_Klassen</a> gestoßen, wo man sich meiner Meinung nach gut in das Thema einlesen kann und vorab einen Kleinen Überblick bekommt. Ich weiß jetzt nicht, ob das Folgende stimmt, da wäre es nett von euch Experten, wenn ihr vielleicht kurz drüber schauen könntet.<br />
Eine Klasse besteht in C++ auf zwei Quellcodedateien:<br />
Der Deklaration und der Implentierung.<br />
Die Deklaration erfolgt üblicherweise in einer Header – Datei. Bei der Deklaration einer Klasse werden ihre Elemente (members, das umfass Daten und Funktionen) festgelegt.<br />
Die Syntax einer Klassendeklaration erfolgt wie folgt:</p>
<pre><code class="language-cpp">class EineKlasse
{
public:					//öffentlich
	EineKlasse();				//der Default - Konstruktor
	EineKlasse(int a=0);			//weiterer Konstruktor mit Parameter und Defaultwert
	EineKlasse(const EineKlasse &amp;a);  //Copy Konstruktor
	~EineKlasse();			//der Destruktor

	int eineFunktion(int x=42);		//eine Funktion mit einem (Default-) Parameter

private:
	int m_eineVariable;			//privat

};
</code></pre>
<p>Die erste Zeile gibt der Klasse den Namen.<br />
Im Klassenrumpf werden die Elemente deklariert. Die Reihenfolge der Member – Deklaration ist beliebig; es empfiehlt sich aber, nach einem gewissen System vorzugehen, z. B. mit dem Konstruktor und Destruktor zu beginnen. Abschließend folgt eine schließende geschweifte Klammer und ein Semikolon.<br />
<strong>Implementierung</strong><br />
Die Implementierung, d. h. der Code für die jeweiligen Memberfunktionen, erfolgt in einer C++ - Datei. Um die Funktion int eineFunktion(int x=42); zu implementieren, schreibt man</p>
<pre><code class="language-cpp">int eineFunktion::eineFunktion(int x = 42)
{
	//Anweisungen
}
</code></pre>
<p>Dabei wird vor den Funktionsname eineFunktion noch der Name der Klasse EineKlasse, gefolgt von zwei Doppelpunkten, gestellt. Dies qualifiziert die Funktion, so dass der Compiler weiß, zu welcher Klasse die Funktionsdefinition gehört. Zu beachten ist, dass die Default – Initialisierung des Parameters nicht wiederholt wird.<br />
<strong>Teile einer Klasse</strong><br />
Eine Klasse setzt sich aus verschiedenen Teilen zusammen:<br />
 Konstruktor<br />
 Destruktor<br />
 Memberfunktion<br />
 Membervariable<br />
<strong>Der Konstruktor</strong><br />
Konstruktoren werden bei der Erschaffung einer Instanz einer Klasse aufgerufen und dienen dazu, Initialisierungen auszuführen, etwa Membervariablen Standartwerte zuzuweisen.<br />
Die Funktionsdefinition beginnt mit dem Namen der Klasse und dem Bereichsopterator ::<br />
Der Konstruktor hat immer denselben Namen wie die Klasse. Er hat keinen Rückgabewert, kann aber einen oder mehrere Parameter besitzen.<br />
<strong>Bsp. 1:</strong></p>
<pre><code class="language-cpp">EineKlasse::EineKlasse()
	:m_eineVariable
{
	//weitere Initialisierungen des Objektes
}
</code></pre>
<p><strong>Bsp. 2:</strong></p>
<pre><code class="language-cpp">EineKlasse::EineKlasse(int a)
	:m_eineVariable(a)
{
	//weitere Initialisierungen
}
</code></pre>
<p><strong>Der Destruktor</strong><br />
Der Destruktor trägt ebenfalls denselben Namen wie die Klasse, aber mit einer vorgestellten Tilde ~. Er hat keinen Rückgabewert und keinen Prameter. Der Destruktor wird aufgerufen, wenn eine Instanz der Klasse zerstört wird. Das passiert, wenn der Bereich (z. B. ein Funktionsrumpf), in dem die Klasse lokal instanziert wird, endet oder der Operator <code>delete</code> für die Instanz aufgerufen wird.<br />
Im Destruktor können also abschließende Aktionen unternommen werden, z. B. reservierter Speicherplatz freigegeben werden, oder andere Objekte davon unterrichtet werden, dass es die Instanz ab jetzt nicht mehr gibt. Oft bleibt der Destruktorrumpf aber auch leer.<br />
<strong>Bsp.:</strong></p>
<pre><code class="language-cpp">EineKlasse::~EineKlasse()
{

}
</code></pre>
<p><strong>Memberfunktionen</strong><br />
Memberfunktionen sind innerhalb einer Klasse deklarierte Funktionen. Die Implementierung geschieht wie auch beim Konstruktor und Destruktor in der Quelldatei EineKlasse.cpp</p>
<p><strong>Bsp.:</strong></p>
<pre><code class="language-cpp">int EineKlasse::eineFunktion(int a)
{
	int ergebnis = m_eineVariable*a;
	cout &lt;&lt; &quot;Ergebnis:&quot; &lt;&lt; ergebnis &lt;&lt; endl;
	return ergebnis;
}
</code></pre>
<p>In diesem Beispiel wird der Parameter mit der Membervariable multipliziert und auch als Funktionswert zurückgegeben.<br />
<strong>Membervariablen</strong><br />
Für Membervariablen gilt wie für Memberfunktionen, dass sie innerhalb der Klasse nur mit ihrem Namen angesprochen werde, von außerhalb mit dem Namen der Instanz qualifiziert werden müssen.<br />
<strong>Zugriffskontrolle</strong><br />
Ein grundlegendes Konzept in der OPP ist die <strong>Datenkapselung</strong>, die in C++ mit den Schlüsselwörtern <strong>private</strong>, <strong>protected</strong> und <strong>public</strong> gesteuert wird. Wenn kein Schlüsselwort angegeben wird, ist die definierte Variable bzw. Methode automatisch <strong>private</strong>. Um ein Element öffentlich zugänglich zu machen, deklariert man es als <strong>public</strong>.</p>
<p>Die Unterscheidung, welche Members welchen Zugriffsschutz bekommen, nimmt man in der Deklaration der Klasse vor:</p>
<pre><code class="language-cpp">class EineKlasse
{
public:
	int liesGeheimnis () const;
protected:
	void bestimmeGeheimnis(int Wert);
private:
	int geheimnis;
};
</code></pre>
<p><strong>public:</strong> Auf diese Elemente ist aus jeder Codepassage heraus Zugriff erlaubt.</p>
<p><strong>protected:</strong> Auf Elemente dieser Zugriffsschutz – Stufe besteht Zugriff von Codeteilen, die</p>
<blockquote>
<p>entweder die Klasse implementieren</p>
</blockquote>
<p>oder</p>
<blockquote>
<p>für solche, die Klassen implementieren, die direkt oder indirekt von der Klasse erben</p>
</blockquote>
<p><strong>private:</strong> Diese Elemente sind nur aus Codeteilen heraus zugreifbar, die der<br />
Implementierung dieser Klasse dienen, üblicherweise als Methoden –Implementierung.</p>
<p>Ich weiß jetzt nicht, ob das genannte alles stimmt?? Ich bin offen für Ratschläge, Tipps und Kritik…<br />
Ich werde mich nun im Buch „Der C++ Programmierer“ in die OPP einlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313225/schulaufgabe-und-ein-bisschen-objektorientierte-programmierung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 07:49:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313225.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Jan 2013 14:58:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Thu, 24 Jan 2013 14:58:21 GMT]]></title><description><![CDATA[<p>Hallo liebe Gemeinde.<br />
Wir haben die Schulaufgabe nun geschrieben. Dank euch und dem Forum war es zwar kein Kinderspiel, aber ein gutes Unterfangen.<br />
Gott sei Dank habe ich so viel bzgl. Strings (also Datentyp String in C++) getan.<br />
Eine der Fragen war wie folgt:<br />
Nennen Sie zwei Unterschiede zwischen dem Datentyp char und dem Datentyp string.<br />
Darauf habe ich geschrieben:<br />
 char muss mit einem Zahlenwert deklariert werden, string jedoch nicht.<br />
Bsp. für char: char Text [1000];<br />
Bsp. für string: string Satz,<br />
 Eine als string deklarierte Variable ist von Haus aus 32 Byte groß, char jedoch so groß, welchen Zahlenwert man ihm zufügt.<br />
Eine andere Frage war wie folgt:<br />
Wie lautet der Befehl, um eine als string deklarierte Variable einzulesen?<br />
Ich habe darauf geschrieben:<br />
string Text;<br />
getline(cin, Text);<br />
Dann kam folgende Frage:<br />
Schreiben Sie ein Programm, dass das Alphabet in Kleinbuchstaben ausgibt. Verwenden Sie die Funktion putchar().<br />
Darauf habe ich geschrieben:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;cstdio&gt;

int main()
{
	char c;

	for (c = 'a'; c&lt;='z'; c++) 
		putchar(c);

	return 0;
}
</code></pre>
<p>Dann kam folgende Frage:<br />
Schreiben Sie ein Programm, das erst die eine Hälfte eines Wortes einliest, dann die zweite Hälfte eines Wortes und als Ausgabe das zusammengefügte Wort ausgibt. Verwenden Sie den Datentyp string.<br />
Darauf habe ich geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	string str_1, str_2, str_3;

	cout &lt;&lt; &quot;Geben Sie das erste Wort ein!\n&quot;;
	getline(cin, str_1);

	cout &lt;&lt; &quot;Geben Sie das zweite Wort ein!\n&quot;;
	getline(cin, str_2);

	str_3 = str_1 + str_2;

	cout &lt;&lt; &quot;Zusammengefuegt heisst das Wort:\n&quot;;
	cout &lt;&lt; str_3 &lt;&lt; &quot;\n&quot;;

	return 0;
}
</code></pre>
<p>Dann kam noch die Frage, welche string Funktionen zu ostream gehören und welche zu istream. Die war auch einfach.<br />
Als nächstes kamen dann Pointer dran.<br />
Eine Aufgabe darin bestand darin einen Taschenrechner über Pointer zu programmieren.<br />
Das habe ich geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Addition.h&quot;
#include &quot;Subtraktion.h&quot;
#include &quot;Multiplikation.h&quot;
#include &quot;Division.h&quot;
using namespace std;

int main()
{
	int number;

	do
	{
		float x, y,z;
		float *px = &amp;x;
		float *py = &amp;y;
		float *pz = &amp;z;

		cout &lt;&lt; &quot;Welche Rechenoperation wollen Sie durchfuehren?\n&quot;;
		cout &lt;&lt; &quot;(1) Addition \n&quot;;
		cout &lt;&lt; &quot;(2) Subtraktion \n&quot;;
		cout &lt;&lt; &quot;(3) Multiplikation \n &quot;;
		cout &lt;&lt; &quot;(4) Division \n&quot;;
		cout &lt;&lt; &quot;(0) Exit! \n&quot;;
		cin  &gt;&gt; number;

		switch(number)
		{
			case 1:
				cout &lt;&lt; &quot;Addition!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = *px + *py;

				cout &lt;&lt; *px &lt;&lt; &quot; + &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 2:
				cout &lt;&lt; &quot;Subtraktion!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = *px - *py;

				cout &lt;&lt; *px &lt;&lt; &quot; - &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 3:
				cout &lt;&lt; &quot;Multiplikation!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = (*px) * (*py);

				cout &lt;&lt; *px &lt;&lt; &quot; * &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 4:
				cout &lt;&lt; &quot;Division!\n&quot;;
				cout &lt;&lt; &quot;Geben Sie dazu zwei Zahlen ein!\n&quot;;
				cin  &gt;&gt; *px &gt;&gt; *py;

				*pz = (*px) / (*py);

				cout &lt;&lt; *px &lt;&lt; &quot; / &quot; &lt;&lt; *py &lt;&lt; &quot; = &quot; &lt;&lt; *pz &lt;&lt; &quot;\n&quot;;

				break;

			case 0:
				cout &lt;&lt; &quot;Exit durch Abbruch!\n&quot;;
				break;

		}
	}while(number!=0);

	return 0;
}
</code></pre>
<p>Dann hätte man über Pointer die Uhrzeit, das Datum und den Wochentag ausgeben sollen.<br />
Das habe ich geschrieben:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;ctime&gt;
#include &lt;cassert&gt;
using namespace std;

const char* wochentag_name(int index)
			{
				assert (0&lt;=index &amp;&amp; index&lt;7);
				static const char* namen[] = {
					&quot;Sonntag&quot;,
					&quot;Montag&quot;,
					&quot;Dienstag&quot;,
					&quot;Mittwoch&quot;,
					&quot;Donnerstag&quot;,
					&quot;Freitag&quot;, 
					&quot;Samstag&quot;
				};
				return namen[index];
			};

int main()
{
	time_t Uhrzeit;
	tm *pUhrzeit;
	Uhrzeit = time(0);
	pUhrzeit = localtime (&amp;Uhrzeit);

	cout &lt;&lt; wochentag_name(pUhrzeit-&gt;tm_wday) &lt;&lt; endl; //Wochentag
	cout &lt;&lt; pUhrzeit -&gt; tm_mday &lt;&lt; '.' &lt;&lt; pUhrzeit -&gt; tm_mon+1 &lt;&lt; '.' &lt;&lt; pUhrzeit -&gt; tm_year + 1900 &lt;&lt; endl; //Datum
	cout &lt;&lt; pUhrzeit -&gt; tm_hour &lt;&lt; ':' &lt;&lt; pUhrzeit -&gt; tm_min   &lt;&lt; ':' &lt;&lt; pUhrzeit -&gt; tm_sec &lt;&lt; endl; //Uhrzeit
	cout &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Wo ich wohl bisschen abgeloost habe, war bei der Erklärung von Zeigerarithmetik<br />
Aber mei … eine 5 oder 6 wird es nicht mehr … mit einer 4 bin ich schon zufrieden.<br />
Aber euch an der Stelle mal ein Danke… ohne euch hätte ich es glaube ich nicht so gut hinbekommen.<br />
So als nächstes ist jetzt Objektorientierung dran.<br />
Bei meiner Recherche bin ich auf <a href="http://www.wikibooks.org/wiki/C++-Programmierung:_Klassen" rel="nofollow">www.wikibooks.org/wiki/C++-Programmierung:_Klassen</a> gestoßen, wo man sich meiner Meinung nach gut in das Thema einlesen kann und vorab einen Kleinen Überblick bekommt. Ich weiß jetzt nicht, ob das Folgende stimmt, da wäre es nett von euch Experten, wenn ihr vielleicht kurz drüber schauen könntet.<br />
Eine Klasse besteht in C++ auf zwei Quellcodedateien:<br />
Der Deklaration und der Implentierung.<br />
Die Deklaration erfolgt üblicherweise in einer Header – Datei. Bei der Deklaration einer Klasse werden ihre Elemente (members, das umfass Daten und Funktionen) festgelegt.<br />
Die Syntax einer Klassendeklaration erfolgt wie folgt:</p>
<pre><code class="language-cpp">class EineKlasse
{
public:					//öffentlich
	EineKlasse();				//der Default - Konstruktor
	EineKlasse(int a=0);			//weiterer Konstruktor mit Parameter und Defaultwert
	EineKlasse(const EineKlasse &amp;a);  //Copy Konstruktor
	~EineKlasse();			//der Destruktor

	int eineFunktion(int x=42);		//eine Funktion mit einem (Default-) Parameter

private:
	int m_eineVariable;			//privat

};
</code></pre>
<p>Die erste Zeile gibt der Klasse den Namen.<br />
Im Klassenrumpf werden die Elemente deklariert. Die Reihenfolge der Member – Deklaration ist beliebig; es empfiehlt sich aber, nach einem gewissen System vorzugehen, z. B. mit dem Konstruktor und Destruktor zu beginnen. Abschließend folgt eine schließende geschweifte Klammer und ein Semikolon.<br />
<strong>Implementierung</strong><br />
Die Implementierung, d. h. der Code für die jeweiligen Memberfunktionen, erfolgt in einer C++ - Datei. Um die Funktion int eineFunktion(int x=42); zu implementieren, schreibt man</p>
<pre><code class="language-cpp">int eineFunktion::eineFunktion(int x = 42)
{
	//Anweisungen
}
</code></pre>
<p>Dabei wird vor den Funktionsname eineFunktion noch der Name der Klasse EineKlasse, gefolgt von zwei Doppelpunkten, gestellt. Dies qualifiziert die Funktion, so dass der Compiler weiß, zu welcher Klasse die Funktionsdefinition gehört. Zu beachten ist, dass die Default – Initialisierung des Parameters nicht wiederholt wird.<br />
<strong>Teile einer Klasse</strong><br />
Eine Klasse setzt sich aus verschiedenen Teilen zusammen:<br />
 Konstruktor<br />
 Destruktor<br />
 Memberfunktion<br />
 Membervariable<br />
<strong>Der Konstruktor</strong><br />
Konstruktoren werden bei der Erschaffung einer Instanz einer Klasse aufgerufen und dienen dazu, Initialisierungen auszuführen, etwa Membervariablen Standartwerte zuzuweisen.<br />
Die Funktionsdefinition beginnt mit dem Namen der Klasse und dem Bereichsopterator ::<br />
Der Konstruktor hat immer denselben Namen wie die Klasse. Er hat keinen Rückgabewert, kann aber einen oder mehrere Parameter besitzen.<br />
<strong>Bsp. 1:</strong></p>
<pre><code class="language-cpp">EineKlasse::EineKlasse()
	:m_eineVariable
{
	//weitere Initialisierungen des Objektes
}
</code></pre>
<p><strong>Bsp. 2:</strong></p>
<pre><code class="language-cpp">EineKlasse::EineKlasse(int a)
	:m_eineVariable(a)
{
	//weitere Initialisierungen
}
</code></pre>
<p><strong>Der Destruktor</strong><br />
Der Destruktor trägt ebenfalls denselben Namen wie die Klasse, aber mit einer vorgestellten Tilde ~. Er hat keinen Rückgabewert und keinen Prameter. Der Destruktor wird aufgerufen, wenn eine Instanz der Klasse zerstört wird. Das passiert, wenn der Bereich (z. B. ein Funktionsrumpf), in dem die Klasse lokal instanziert wird, endet oder der Operator <code>delete</code> für die Instanz aufgerufen wird.<br />
Im Destruktor können also abschließende Aktionen unternommen werden, z. B. reservierter Speicherplatz freigegeben werden, oder andere Objekte davon unterrichtet werden, dass es die Instanz ab jetzt nicht mehr gibt. Oft bleibt der Destruktorrumpf aber auch leer.<br />
<strong>Bsp.:</strong></p>
<pre><code class="language-cpp">EineKlasse::~EineKlasse()
{

}
</code></pre>
<p><strong>Memberfunktionen</strong><br />
Memberfunktionen sind innerhalb einer Klasse deklarierte Funktionen. Die Implementierung geschieht wie auch beim Konstruktor und Destruktor in der Quelldatei EineKlasse.cpp</p>
<p><strong>Bsp.:</strong></p>
<pre><code class="language-cpp">int EineKlasse::eineFunktion(int a)
{
	int ergebnis = m_eineVariable*a;
	cout &lt;&lt; &quot;Ergebnis:&quot; &lt;&lt; ergebnis &lt;&lt; endl;
	return ergebnis;
}
</code></pre>
<p>In diesem Beispiel wird der Parameter mit der Membervariable multipliziert und auch als Funktionswert zurückgegeben.<br />
<strong>Membervariablen</strong><br />
Für Membervariablen gilt wie für Memberfunktionen, dass sie innerhalb der Klasse nur mit ihrem Namen angesprochen werde, von außerhalb mit dem Namen der Instanz qualifiziert werden müssen.<br />
<strong>Zugriffskontrolle</strong><br />
Ein grundlegendes Konzept in der OPP ist die <strong>Datenkapselung</strong>, die in C++ mit den Schlüsselwörtern <strong>private</strong>, <strong>protected</strong> und <strong>public</strong> gesteuert wird. Wenn kein Schlüsselwort angegeben wird, ist die definierte Variable bzw. Methode automatisch <strong>private</strong>. Um ein Element öffentlich zugänglich zu machen, deklariert man es als <strong>public</strong>.</p>
<p>Die Unterscheidung, welche Members welchen Zugriffsschutz bekommen, nimmt man in der Deklaration der Klasse vor:</p>
<pre><code class="language-cpp">class EineKlasse
{
public:
	int liesGeheimnis () const;
protected:
	void bestimmeGeheimnis(int Wert);
private:
	int geheimnis;
};
</code></pre>
<p><strong>public:</strong> Auf diese Elemente ist aus jeder Codepassage heraus Zugriff erlaubt.</p>
<p><strong>protected:</strong> Auf Elemente dieser Zugriffsschutz – Stufe besteht Zugriff von Codeteilen, die</p>
<blockquote>
<p>entweder die Klasse implementieren</p>
</blockquote>
<p>oder</p>
<blockquote>
<p>für solche, die Klassen implementieren, die direkt oder indirekt von der Klasse erben</p>
</blockquote>
<p><strong>private:</strong> Diese Elemente sind nur aus Codeteilen heraus zugreifbar, die der<br />
Implementierung dieser Klasse dienen, üblicherweise als Methoden –Implementierung.</p>
<p>Ich weiß jetzt nicht, ob das genannte alles stimmt?? Ich bin offen für Ratschläge, Tipps und Kritik…<br />
Ich werde mich nun im Buch „Der C++ Programmierer“ in die OPP einlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293037</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Thu, 24 Jan 2013 14:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Thu, 24 Jan 2013 20:25:41 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Dank euch und dem Forum war es zwar kein Kinderspiel</p>
</blockquote>
<p>Wurdest du hier so sehr abgelenkt?</p>
<p>Wegen der ersten Frage... Die Frage ist natürlich schon etwas komisch formuliert und deine Antworten erst recht.<br />
Wegen dem Rest. Sorry, das ist viel zu viel. Warum sollte sich das jemand durchlesen? Du wirst schon sehen, was dein Lehrer von deinen Antworten hält <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2293171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293171</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Thu, 24 Jan 2013 20:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 07:10:09 GMT]]></title><description><![CDATA[<p>Ich hab mir auch nicht alles durchgelesen, aber ich finds gut.<br />
Es ist zwar noch sehr ausbaufähig, aber allein den Fortschritt von max in den 2-3 Monaten jetzt, den finde ich toll.</p>
<p>Mach weiter so und gib Gas dann hast du in 2 weiteren Monaten deinen Lehrer vom Wissensstand überholt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293249</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 25 Jan 2013 07:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 08:41:24 GMT]]></title><description><![CDATA[<p>Ist mir auch zuviel auf alles einzugehen.<br />
Was mir beim überfliegen nicht passt, ist</p>
<blockquote>
<p>Oft bleibt der Destruktorrumpf aber auch leer.</p>
</blockquote>
<p>Der Rumpf bleibt eigntlich nur leer, wenn der D'tor virtual sein muss und nix zu tun hat, sonst lässt man ihn besser ganz weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293273</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Fri, 25 Jan 2013 08:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 09:50:06 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Nennen Sie zwei Unterschiede zwischen dem Datentyp char und dem Datentyp string.<br />
Darauf habe ich geschrieben:<br />
 char muss mit einem Zahlenwert deklariert werden, string jedoch nicht.<br />
Bsp. für char: char Text [1000];<br />
Bsp. für string: string Satz,<br />
 Eine als string deklarierte Variable ist von Haus aus 32 Byte groß, char jedoch so groß, welchen Zahlenwert man ihm zufügt.</p>
</blockquote>
<p>silent_max schrieb:</p>
<blockquote>
<p> char muss mit einem Zahlenwert deklariert werden, string jedoch nicht.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Wieso MUSS o_O? Nix muss! Aber kann ...</p>
<p>silent_max schrieb:</p>
<blockquote>
<p> Eine als string deklarierte Variable ist von Haus aus 32 Byte groß, char jedoch so groß, welchen Zahlenwert man ihm zufügt.</p>
</blockquote>
<p>32?<br />
Also bei mir ist ein string 24 Byte breit und ein char 1 Byte ...</p>
<pre><code class="language-cpp">string e;
cout&lt;&lt;sizeof(e); // 24 Byte

string e=&quot;OLOLOLO&quot;;
cout&lt;&lt;sizeof(e);  // Ebenfalls 24 Byte

char c;
cout&lt;&lt;sizeof(c); // 1 Byte

char c='A';
cout&lt;&lt;sizeof(c); // 1 Byte

char *c=&quot;lol&quot;;  // C-String also kein char  
cout&lt;&lt;sizeof(c); // 3 Byte
</code></pre>
<p>Weiter hab ich nicht gelesen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293289</guid><dc:creator><![CDATA[Quak]]></dc:creator><pubDate>Fri, 25 Jan 2013 09:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 09:54:05 GMT]]></title><description><![CDATA[<p>Oops verschrieben^^</p>
<p>So is richtig:</p>
<pre><code class="language-cpp">char *c=&quot;lol&quot;;  // C-String also kein char  
cout&lt;&lt;sizeof(c); // 4 Byte

Um jedoch die länge im &quot;C Style&quot; herausfinden benutzt man die Funktion:

strlen(const Char* var);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2293292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293292</guid><dc:creator><![CDATA[Quak]]></dc:creator><pubDate>Fri, 25 Jan 2013 09:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 09:59:52 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Schreiben Sie ein Programm, das erst die eine Hälfte eines Wortes einliest, dann die zweite Hälfte eines Wortes und als Ausgabe das zusammengefügte Wort ausgibt. Verwenden Sie den Datentyp string.</p>
</blockquote>
<p>Mmh!?<br />
was ist falsch an folgender Lösung:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

int main()
{
    using namespace std;
    string wort;
    cout &lt;&lt; &quot;Geben Sie bitte das komplette Wort ein:&quot;;
    cin &gt;&gt; wort;
    cout &lt;&lt; &quot; ... die erste Haelfte wurde vor der zweite gelesen!&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Die erste Haelfte ist: &quot; &lt;&lt; wort.substr(0, wort.length()/2) &lt;&lt; endl;
    cout &lt;&lt; &quot;Die zweite Haelfte ist: &quot; &lt;&lt; wort.substr(wort.length()/2) &lt;&lt; endl;
    cout &lt;&lt; &quot;das ganze Wort lautet: &quot; &lt;&lt; wort &lt;&lt; endl;
}
</code></pre>
<p>nichts - oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293293</guid><dc:creator><![CDATA[Besserwessi]]></dc:creator><pubDate>Fri, 25 Jan 2013 09:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 10:06:50 GMT]]></title><description><![CDATA[<p>silent_max schrieb:</p>
<blockquote>
<p>Nennen Sie zwei Unterschiede zwischen dem Datentyp char und dem Datentyp string.<br />
Darauf habe ich geschrieben:<br />
 char muss mit einem Zahlenwert deklariert werden, string jedoch nicht.<br />
Bsp. für char: char Text [1000];<br />
Bsp. für string: string Satz,<br />
 Eine als string deklarierte Variable ist von Haus aus 32 Byte groß, char jedoch so groß, welchen Zahlenwert man ihm zufügt.</p>
</blockquote>
<p>Thema verfehlt.<br />
Du solltest char und string vergleichen. Nicht char[] und string.<br />
Der Rest sieht mir ok aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293295</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 25 Jan 2013 10:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 10:18:27 GMT]]></title><description><![CDATA[<p>Besserwessi schrieb:</p>
<blockquote>
<p>... Kokolores ...</p>
</blockquote>
<p>Ich wär gern dabei, wie Du das später dem Dozenten zu erklären versuchst ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293298</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 25 Jan 2013 10:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 10:35:35 GMT]]></title><description><![CDATA[<p>Volkard schrieb:</p>
<blockquote>
<p>Der Rest sieht mir ok aus.</p>
</blockquote>
<p>silent_max schrieb:</p>
<blockquote>
<p>Eine als string deklarierte Variable ist von Haus aus 32 Byte groß</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>string = 24 Byte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293302</guid><dc:creator><![CDATA[Quak]]></dc:creator><pubDate>Fri, 25 Jan 2013 10:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 10:43:17 GMT]]></title><description><![CDATA[<p>Quak schrieb:</p>
<blockquote>
<p>string = 24 Byte</p>
</blockquote>
<p>Quatsch!<br />
Das ist vom System (OS + Compiler) abhängig.<br />
Auf meinem 32bit XP benutzt VS 2010 28 Byte, g++ nur 4.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293309</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 25 Jan 2013 10:43:17 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 10:57:23 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Thema verfehlt.<br />
Du solltest char und string vergleichen. Nicht char[] und string.<br />
Der Rest sieht mir ok aus.</p>
</blockquote>
<p>ich bin mir da nicht ganz sicher, was er wirklich vergleichen sollte. Ich könnte mir auch sehr gut vorstellen, dass sich der Lehrer da ungenau ausgedrückt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293316</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 25 Jan 2013 10:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 10:57:40 GMT]]></title><description><![CDATA[<p>Oh, das wusste ich nicht, wieder was gelernt danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293317</guid><dc:creator><![CDATA[Quak]]></dc:creator><pubDate>Fri, 25 Jan 2013 10:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 11:04:56 GMT]]></title><description><![CDATA[<p>Quak schrieb:</p>
<blockquote>
<p>Oh, das wusste ich nicht, wieder was gelernt danke.</p>
</blockquote>
<p>Naja, string ist ja kein nativer Datentyp, sondern eine Klasse. Wie genau die realisiert wird, kann ja jeder Hersteller selbst entscheiden.<br />
Wichtig ist letztendlich, dass sie die vom Standard vorgeschriebene Schnittstelle und Funktionalität anbietet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293322</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 25 Jan 2013 11:04:56 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 15:50:51 GMT]]></title><description><![CDATA[<p>wenn ich so eine aufgabe schon sehe wo der lehrer keinen plan hat, auf präzise aufgaben sch*** und char mit string gleichsetzt. selbst keinen plan haben aber lehren. tolle wurst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293406</guid><dc:creator><![CDATA[we don&#x27;t need no educatio]]></dc:creator><pubDate>Fri, 25 Jan 2013 15:50:51 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 16:35:51 GMT]]></title><description><![CDATA[<p>we don't need no educatio schrieb:</p>
<blockquote>
<p>wenn ich so eine aufgabe schon sehe wo der lehrer ... und char mit string gleichsetzt.</p>
</blockquote>
<p>Wo tut er das denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293420</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 25 Jan 2013 16:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 18:43:36 GMT]]></title><description><![CDATA[<p>Das wird sich zeigen, was ich in der Schulaufgabe haben werde. Also eine 5 oder 6 wird es bestimmt nicht...</p>
<p>Zumindest ist bei meinem Betriebssystem <code>string</code> 32 Byte groß.</p>
<p>Zur Objektorientierung...</p>
<p>Ich werde mir jetzt das Buch &quot;Der C++ Programmierer&quot; zu Gemüte führen. Vielleicht kommen da noch Fragen....</p>
<p>Also schnallt euch an ... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2293483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293483</guid><dc:creator><![CDATA[silent_max]]></dc:creator><pubDate>Fri, 25 Jan 2013 18:43:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 22:05:33 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>we don't need no educatio schrieb:</p>
<blockquote>
<p>wenn ich so eine aufgabe schon sehe wo der lehrer ... und char mit string gleichsetzt.</p>
</blockquote>
<p>Wo tut er das denn?</p>
</blockquote>
<p>die aufgabe zielt offenbar auf char[] vs. std::string ab. leider ist der lehrer zu unwissend, um dies entsprechend präzise zu formulieren. es wäre sehr überraschend, wenn er tatsächlich char gemeint hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293520</guid><dc:creator><![CDATA[wdnne]]></dc:creator><pubDate>Fri, 25 Jan 2013 22:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to Schulaufgabe und ein bisschen Objektorientierte Programmierung on Fri, 25 Jan 2013 22:13:30 GMT]]></title><description><![CDATA[<p>Angenommen, er würde char vs string meinen. Wie hätte er das Deiner Meinung nach formulieren sollen?</p>
<p>Wieso ist es eigentlich so 'offenbar', dass er was anderes meint, als er fragt? Für mich ist das auf jeden Fall nicht 'offenbar', sondern reinspekuliert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2293523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2293523</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 25 Jan 2013 22:13:30 GMT</pubDate></item></channel></rss>