<?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[Void pointer oder überladene Funktion]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich arbeite mich zurzeit gerade in C++ ein und bin auf die sog. void pointer gestossen. Dabei habe ich mich nach dessen Sinn rsp. dessen Verwendungsbereich gefragt. Wann verwendet man besser void pointer als überladene Funktionen? Im Folgenden ein kleines Programm, welches ich geschrieben habe:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void inc_ol(int &amp;a);
void inc_ol(char &amp;a);
void inc_vp(void* a,int size);

int main(){

    int i = 2; char c = 'x';

    //Inkrementierung von i und c per überladene Funktion
    inc_ol(i);
    inc_ol(c);
    cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; c &lt;&lt; endl;

    //Inkrementierung von i und c per void pointer
    inc_vp(&amp;i,sizeof(i));
    inc_vp(&amp;c,sizeof(c));
    cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; c &lt;&lt; endl;

    return 0;
}

void inc_ol(int &amp;a){ a++; }

void inc_ol(char &amp;a){ a++; }

void inc_vp(void* a,int size){

    if(size == sizeof(char)){
        char* pchar = (char*) a;
        (*pchar)++;
    }
    else if(size == sizeof(int)){
        int* pint = (int*) a;
        (*pint)++;
    }
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>3 y
4 z
</code></pre>
<p>Die Implementierung per überladene Funktionen ist deutlich einfacher so wie ich finde. Was ist genau der Vorteil hier von der void pointer Version? Gibt es überhaupt einen? Gibt es bessere Situationen um void pointer zu verwenden?</p>
<p>Ich danke vielmals für die Aufklärung <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>MfG<br />
Dread</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273745/void-pointer-oder-überladene-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 00:17:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273745.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Sep 2010 17:58:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Void pointer oder überladene Funktion on Sun, 12 Sep 2010 17:58:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich arbeite mich zurzeit gerade in C++ ein und bin auf die sog. void pointer gestossen. Dabei habe ich mich nach dessen Sinn rsp. dessen Verwendungsbereich gefragt. Wann verwendet man besser void pointer als überladene Funktionen? Im Folgenden ein kleines Programm, welches ich geschrieben habe:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void inc_ol(int &amp;a);
void inc_ol(char &amp;a);
void inc_vp(void* a,int size);

int main(){

    int i = 2; char c = 'x';

    //Inkrementierung von i und c per überladene Funktion
    inc_ol(i);
    inc_ol(c);
    cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; c &lt;&lt; endl;

    //Inkrementierung von i und c per void pointer
    inc_vp(&amp;i,sizeof(i));
    inc_vp(&amp;c,sizeof(c));
    cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; c &lt;&lt; endl;

    return 0;
}

void inc_ol(int &amp;a){ a++; }

void inc_ol(char &amp;a){ a++; }

void inc_vp(void* a,int size){

    if(size == sizeof(char)){
        char* pchar = (char*) a;
        (*pchar)++;
    }
    else if(size == sizeof(int)){
        int* pint = (int*) a;
        (*pint)++;
    }
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>3 y
4 z
</code></pre>
<p>Die Implementierung per überladene Funktionen ist deutlich einfacher so wie ich finde. Was ist genau der Vorteil hier von der void pointer Version? Gibt es überhaupt einen? Gibt es bessere Situationen um void pointer zu verwenden?</p>
<p>Ich danke vielmals für die Aufklärung <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>MfG<br />
Dread</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1951675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1951675</guid><dc:creator><![CDATA[Dreadslayer]]></dc:creator><pubDate>Sun, 12 Sep 2010 17:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to Void pointer oder überladene Funktion on Sun, 12 Sep 2010 18:02:43 GMT]]></title><description><![CDATA[<p>Dreadslayer schrieb:</p>
<blockquote>
<p>Die Implementierung per überladene Funktionen ist deutlich einfacher so wie ich finde.</p>
</blockquote>
<p>Und sollte man in C++ auch verwenden.</p>
<p>Dreadslayer schrieb:</p>
<blockquote>
<p>Was ist genau der Vorteil hier von der void pointer Version? Gibt es überhaupt einen? Gibt es bessere Situationen um void pointer zu verwenden?</p>
</blockquote>
<p>In C kann man keine Funktionen überladen. Daher verwendet man zum Teil so ein oder so ähnliches Vorgehen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1951678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1951678</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 12 Sep 2010 18:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to Void pointer oder überladene Funktion on Sun, 12 Sep 2010 18:08:11 GMT]]></title><description><![CDATA[<p>Vielen Dank für Deine Antwort Dravere.</p>
<p>Solange man also Funktionen überladen kann (wie in C++) werden void pointer gar nie benötigt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1951682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1951682</guid><dc:creator><![CDATA[Dreadslayer]]></dc:creator><pubDate>Sun, 12 Sep 2010 18:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to Void pointer oder überladene Funktion on Sun, 12 Sep 2010 18:54:47 GMT]]></title><description><![CDATA[<p>Dreadslayer schrieb:</p>
<blockquote>
<p>Solange man also Funktionen überladen kann (wie in C++) werden void pointer gar nie benötigt?</p>
</blockquote>
<p>Man kann <code>void</code> -Zeiger noch für vieles anderes verwenden. Ein <code>void</code> -Zeiger ist schliesslich einfach nur ein Zeiger ohne Typangabe. In C++ kommen sie aber eher selten vor, weil man zum Beispiel auch Templates hat und man Wert auf Typsicherheit legt, welche bei einem <code>void</code> -Zeiger verloren geht.</p>
<p>Man kann also nicht sagen, dass ein <code>void</code> -Zeiger gar nicht benötigt wird in C++. Aber im allgemeinen ist es wirklich sehr selten oder nur für ganz spezielle Fälle. Allerdings wohl nie für den von dir aufgezeigten Fall.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1951705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1951705</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 12 Sep 2010 18:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Void pointer oder überladene Funktion on Sun, 12 Sep 2010 20:18:56 GMT]]></title><description><![CDATA[<blockquote>
<p>template&lt;class T&gt;<br />
void inc_ol(T &amp;a){ a++; }</p>
</blockquote>
<p>copy&amp;paste der selben funktion nur mit minimalen aenderungen sollte man grundsaetzlich versuchen zu meiden, oder wenigstens nur den &quot;unterschied&quot; seperate implementieren und dann den gemeinsammen teil in eine seperate funktion stecken die nur einmal maintained werden muss. (also falls statt a++ noch viel mehr vorhanden sein wuerde).</p>
<p>aber in dem fall sollte ein template doch recht passend sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1951731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1951731</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Sun, 12 Sep 2010 20:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to Void pointer oder überladene Funktion on Sun, 12 Sep 2010 21:00:20 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1951738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1951738</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sun, 12 Sep 2010 21:00:20 GMT</pubDate></item></channel></rss>