<?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[Wofür braucht man Polymorphie ?]]></title><description><![CDATA[<p>Wofür braucht man Polymorphie ?</p>
<p>Wofür könnte man sowas z.b. gebrauchen irgendwie hab ich den sinn von Polymorphie noch nicht verstanden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int add ( int , int );
double add ( double,double );

int main()
{
int ret1;

double ret2;

ret1 = add ( 1,1);
ret2 = add ( 9.0 , 2.0);

cout&lt;&lt;&quot;ret1: &quot; &lt;&lt; ret1 &lt;&lt;endl;
cout&lt;&lt;&quot;ret2: &quot; &lt;&lt; ret2 &lt;&lt;endl;

system(&quot;PAUSE&quot;);

}

int add ( int z1, int z2)
{
int erg;

erg = z1+z2;
return erg;
}

double add ( double z1 , double z2)
{
double erg;

erg = z1 /z2;

return erg;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/265948/wofür-braucht-man-polymorphie</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 15:44:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265948.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 May 2010 15:21:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 15:21:56 GMT]]></title><description><![CDATA[<p>Wofür braucht man Polymorphie ?</p>
<p>Wofür könnte man sowas z.b. gebrauchen irgendwie hab ich den sinn von Polymorphie noch nicht verstanden. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int add ( int , int );
double add ( double,double );

int main()
{
int ret1;

double ret2;

ret1 = add ( 1,1);
ret2 = add ( 9.0 , 2.0);

cout&lt;&lt;&quot;ret1: &quot; &lt;&lt; ret1 &lt;&lt;endl;
cout&lt;&lt;&quot;ret2: &quot; &lt;&lt; ret2 &lt;&lt;endl;

system(&quot;PAUSE&quot;);

}

int add ( int z1, int z2)
{
int erg;

erg = z1+z2;
return erg;
}

double add ( double z1 , double z2)
{
double erg;

erg = z1 /z2;

return erg;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1890958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890958</guid><dc:creator><![CDATA[poly]]></dc:creator><pubDate>Sat, 01 May 2010 15:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 15:36:47 GMT]]></title><description><![CDATA[<p>poly schrieb:</p>
<blockquote>
<p>Wofür braucht man Polymorphie ?</p>
</blockquote>
<p>das ist keine Polymorphie sondern einfache operator überladung. lies dich doch mal ein bischen in das thema ein, das internet bietet dafür schon ganz gute quellen die auch relativ einfach zu finden sind.</p>
<p>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890962</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Sat, 01 May 2010 15:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 15:37:52 GMT]]></title><description><![CDATA[<p>noobLolo schrieb:</p>
<blockquote>
<p>operator überladung.</p>
</blockquote>
<p>meinte natürlich parameter überladung <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>
<p>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890963</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Sat, 01 May 2010 15:37:52 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 15:41:40 GMT]]></title><description><![CDATA[<p>noobLolo schrieb:</p>
<blockquote>
<p>das ist keine Polymorphie</p>
</blockquote>
<p>Ich denke, das hängt von der Definition ab. Falls man unter Polymorphie versteht, unterschiedliche Aktionen einheitlich ansprechen zu können, kann man Funktionsüberladung dazu zählen. Genauso wie man Templateprogrammierung als statische Polymorphie auffassen kann.</p>
<p>Was du vielleicht meinst, ist Laufzeit- bzw. dynamische Polymorphie mittels virtueller Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890964</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 01 May 2010 15:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 16:16:29 GMT]]></title><description><![CDATA[<p>hiho,</p>
<p>mein Prof. hatte uns damals folgendes Bsp. gezeigt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Means_Of_Transport
{
    protected:
        int price;

    public:
        Means_Of_Transport(int price) : price(price) {}
        virtual ~Means_Of_Transport() {}
        virtual int getPrice() = 0;
};

class Car : public Means_Of_Transport
{
    public:
        Car(int price) :  Means_Of_Transport(price) {}
        virtual ~Car() {}
        int getPrice() { return price; }

};

class Bike : public Means_Of_Transport
{
    public:
        Bike(int price) :  Means_Of_Transport(price) {}
        virtual ~Bike() {}
        int getPrice() { return price; }
};

class Scooter : public Means_Of_Transport
{
    public:
        Scooter(int price) : Means_Of_Transport(price) {}
        virtual ~Scooter() {}
        int getPrice() { return price; }
};

int main()
{
    Means_Of_Transport* p = NULL;

    Car c(32000);
    p = &amp;c;
    cout &lt;&lt; &quot;Car : &quot; &lt;&lt; p-&gt;getPrice() &lt;&lt; endl;

    Bike b(799);
    p = &amp;b;
    cout &lt;&lt; &quot;Bike : &quot; &lt;&lt; p-&gt;getPrice() &lt;&lt; endl;

    Scooter s(1234);
    p = &amp;s;
    cout &lt;&lt; &quot;Scooter : &quot; &lt;&lt; p-&gt;getPrice() &lt;&lt; endl;

    cin.get();
    return 0;
}
</code></pre>
<p>Du kannst den Pointer also auf ein beliebiges Subklassen-Objekt setzen, und das Resultat stimmt.</p>
<p>hoff das hilft^^</p>
<p>[ EDIT ] Abgeändert nach fghgfhs Beitrag.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890971</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 01 May 2010 16:16:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 15:57:04 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Was du vielleicht meinst, ist Laufzeit- bzw. dynamische Polymorphie mittels virtueller Funktionen.</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class vehicle{
public:
	virtual const char *getName(){
		return &quot;&quot;;
	};
	virtual int getNumberOfWheels(){
		return 0;
	};
};

class car : public vehicle{
public:
	const char *getName(){
		return &quot;car&quot;;
	};
	int getNumberOfWheels(){
		return 4;
	};
};

class bicycle : public vehicle{
public:
	const char *getName(){
		return &quot;bicycle&quot;;
	};
	int getNumberOfWheels(){
		return 2;
	};
};

int main() {
	vehicle *data[2];
	data[0] = new car();
	data[1] = new bicycle();

	int l = 2;
	while(l--){
		cout &lt;&lt; &quot;a &quot; &lt;&lt; data[l]-&gt;getName() &lt;&lt; &quot; uses &quot; &lt;&lt; data[l]-&gt;getNumberOfWheels() &lt;&lt; &quot; wheels&quot; &lt;&lt; endl;
	}
	return 0;
}
</code></pre>
<p>ja an sowas denk ich iwie immer wenn das wort polymorphie fällt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890973</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Sat, 01 May 2010 15:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 15:58:26 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>hiho,</p>
<p>mein Prof. hatte uns damals folgendes Bsp. gezeigt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Means_Of_Transport
{
    public:
        virtual ~Means_Of_Transport() {}
        virtual int getPrice() = 0;
    
};

class Car : public Means_Of_Transport
{
    private:
        int price;
        
    public:
        Car() : price(32000) {}
        virtual ~Car() {}
        int getPrice() { return price; }
        
};

class Bike : public Means_Of_Transport
{
    private:
        int price;
        
    public:
        Bike() : price(799) {}
        virtual ~Bike() {}
        int getPrice() { return price; }
};

class Scooter : public Means_Of_Transport
{
    private:
        int price;
        
    public:
        Scooter() : price(1234) {}
        virtual ~Scooter() {}
        int getPrice() { return price; }
};

int main()
{
    Means_Of_Transport* p = NULL;
    
    Car c;
    p = &amp;c;
    cout &lt;&lt; &quot;Car : &quot; &lt;&lt; p-&gt;getPrice() &lt;&lt; endl;
    
    Bike b;
    p = &amp;b;
    cout &lt;&lt; &quot;Bike : &quot; &lt;&lt; p-&gt;getPrice() &lt;&lt; endl;
    
    Scooter s;
    p = &amp;s;
    cout &lt;&lt; &quot;Scooter : &quot; &lt;&lt; p-&gt;getPrice() &lt;&lt; endl;
    
    cin.get();
    return 0;
}
</code></pre>
<p>Du kannst den Pointer also auf ein beliebiges Subklassen-Objekt setzen, und das Resultat stimmt.</p>
<p>hoff das hilft^^</p>
</blockquote>
<p>Ich find das Beispiel aber nicht so schön. Man könnte die Variable für den Preis auch einfach protected machen und diese stattdessen ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1890975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890975</guid><dc:creator><![CDATA[fghgfh]]></dc:creator><pubDate>Sat, 01 May 2010 15:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 16:07:16 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

class Vehicle
{
	protected:
		double myPrice;
		int myWheels;
		std::string myName;

	public:
		Vehicle(double price, int wheels, const std::string&amp; name) : myPrice(price), myWheels(wheels), myName(name) { }
		double getPrice() const { return myPrice; }
		int getWheels() const { return myWheels; }
		const std::string&amp; getName() const { return myName; }
};

class Car : public Vehicle
{
	public:
		Car() : Vehicle(100, 4, &quot;Car&quot;) {}
};

class Bike : public Vehicle
{
	public:
		Bike() : Vehicle(10, 2, &quot;Bike&quot;) {}
};

void print(Vehicle&amp; v);

int main()
{
	Vehicle *v = new Car();

	print(*v);

	delete v;

	v = new Bike();

	print(*v);

	delete v;
}

void print(Vehicle&amp; v)
{
	std::cout &lt;&lt; &quot;Name: &quot; &lt;&lt; v.getName() &lt;&lt; &quot;\nPrice: &quot; &lt;&lt; v.getPrice() &lt;&lt; &quot;\nWheels: &quot; &lt;&lt; v.getWheels() &lt;&lt; &quot;\n&quot; &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1890979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1890979</guid><dc:creator><![CDATA[,.m,.]]></dc:creator><pubDate>Sat, 01 May 2010 16:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 18:49:25 GMT]]></title><description><![CDATA[<p>Aber wo ist der Sinn hier wofür kann man 2 mal denselben Funktions nahmen benutzen ?</p>
<p>int add ( int , int );<br />
double add ( double,double );</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891041</guid><dc:creator><![CDATA[poly]]></dc:creator><pubDate>Sat, 01 May 2010 18:49:25 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 18:55:46 GMT]]></title><description><![CDATA[<p>poly schrieb:</p>
<blockquote>
<p>Aber wo ist der Sinn hier wofür kann man 2 mal denselben Funktions nahmen benutzen ?</p>
<p>int add ( int , int );<br />
double add ( double,double );</p>
</blockquote>
<p>Das ist keine Polymorphie, sondern Funktionsüberladung.</p>
<p>Und der Sinn ist einfach, dass du abhängig vom Typ unterschiedliche Funktionen aufrufen kannst, ohne ständig dafür einen neuen Namen zu nutzen. Das wird besonders nützlich, wenn du eigene Typen erstellst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891042</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 01 May 2010 18:55:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sat, 01 May 2010 23:17:07 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>poly schrieb:</p>
<blockquote>
<p>Aber wo ist der Sinn hier wofür kann man 2 mal denselben Funktions nahmen benutzen ?</p>
<p>int add ( int , int );<br />
double add ( double,double );</p>
</blockquote>
<p>Das ist keine Polymorphie, sondern Funktionsüberladung.</p>
<p>Und der Sinn ist einfach, dass du abhängig vom Typ unterschiedliche Funktionen aufrufen kannst, ohne ständig dafür einen neuen Namen zu nutzen. Das wird besonders nützlich, wenn du eigene Typen erstellst.</p>
</blockquote>
<p>Ich würde eher sagen, es wird besonders nützlich in Verbindung mit Templates.<br />
Als simples Beispiel würde ich einfach mal maximales Element in einem std::vector nennen.<br />
Oder auf diese Funktionen bezogen, Summe aller Elemente eines std::vectors.</p>
<pre><code class="language-cpp">std::accumulate(vector.begin(), vector.end(), 0);
</code></pre>
<p>Die Template-Funktion verwendet (vermutlich - hab es nicht nachgekuckt) den<br />
operator+, aber kann natürlich auch mit deiner add-Funktion implementiert werden.</p>
<p>Wenn man jetzt ne eigene Klasse z.B. für komplexe Zahlen macht und diese<br />
Funktion implementiert, braucht man diese Funktion nicht neu schreiben.</p>
<p>Natürlich braucht man durch Funktionsüberladung auch ohne Template weniger<br />
Funktionsnamen. In Verbindung mit Templates kann es nur besonders nützlich werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891155</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 01 May 2010 23:17:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Sun, 02 May 2010 04:25:22 GMT]]></title><description><![CDATA[<p><a href="http://www.schule.de/schulen/oszhdl/gymnasium/faecher/informatik/oop/polymorphie.htm" rel="nofollow">http://www.schule.de/schulen/oszhdl/gymnasium/faecher/informatik/oop/polymorphie.htm</a></p>
<p>Polymorphie findest du z.B. in (fast) allen GUI Frameworks. Es gibt Buttons, Textfelder usw. die alle von einer Klasse (Widget) ableiten und die paint Methode überschreiben, so z.B. ein Dialog mehrere solcher Widgets enthalten kann und dann immer nur widget.paint aufruft und durch polymorphie wird dann immer entwas anderes gezeichnet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891177</guid><dc:creator><![CDATA[ßßßßßßßßß]]></dc:creator><pubDate>Sun, 02 May 2010 04:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Mon, 03 May 2010 12:43:20 GMT]]></title><description><![CDATA[<p>poly schrieb:</p>
<blockquote>
<p>Aber wo ist der Sinn hier wofür kann man 2 mal denselben Funktions nahmen benutzen ? ...</p>
</blockquote>
<p>ich würde eher anders herum sagen: Warum sollte man 2 Funktionen, die (mit unterschiedlichen Typen) <em>dasselbe</em> machen, unterschiedlich nennen?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891721</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 03 May 2010 12:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wofür braucht man Polymorphie ? on Mon, 03 May 2010 13:54:48 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>Das ist keine Polymorphie, sondern Funktionsüberladung.</p>
</blockquote>
<p>Ueberladen ist auch eine Form von Polymorphie. Ich dachte, das wurde weiter oben schon geklaert ...</p>
<p>Ansonsten: Wurde denn schon mal <a href="http://de.wikipedia.org/wiki/Polymorphie_%28Programmierung%29" rel="nofollow">http://de.wikipedia.org/wiki/Polymorphie_(Programmierung)</a> bemueht. Da ist das + Beispiel erklaert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891768</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 03 May 2010 13:54:48 GMT</pubDate></item></channel></rss>