<?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[Verständniss frage (static Methoden, Methoden überschreiben)]]></title><description><![CDATA[<p>Guten abend;</p>
<p>Meine Frage, wofür nehme ich static Methoden?(mal ein einfaches praktisches Beispiel nennen, und wieso man das da macht)!</p>
<p>Weil ich sie ohne objekt aufrufen kann? oder welchen Sinn hat das?</p>
<p>Und warum macht man sowas?</p>
<pre><code class="language-cpp">class Base
{
 public:
 virtual void funktion()
 {
 cout&lt;&lt;&quot;eine funktion&quot;&lt;&lt;endl;
 }
};

class Member:public Base
{
 public:
 void funktion()
 {
 cout&lt;&lt;&quot;Auch eine funktion&lt;&lt;endl;
 }
};

void Funktion(Base&amp; b)
{
b.funktion();
}
</code></pre>
<p>aufruf im prog:</p>
<pre><code class="language-cpp">Base b;
Member m;
Funktion(b);
Funktion(m);

m.funktion();  //haben diese beiden Varianten einen unterschied?
b.funktion();  //ist es nicht egal ob Funktion(b) oder b.funktion??
</code></pre>
<p>so das sind meine fragen...vielleicht kanns mir einer erklären</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/104073/verständniss-frage-static-methoden-methoden-überschreiben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 16:37:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/104073.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Mar 2005 22:08:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständniss frage (static Methoden, Methoden überschreiben) on Tue, 15 Mar 2005 22:08:31 GMT]]></title><description><![CDATA[<p>Guten abend;</p>
<p>Meine Frage, wofür nehme ich static Methoden?(mal ein einfaches praktisches Beispiel nennen, und wieso man das da macht)!</p>
<p>Weil ich sie ohne objekt aufrufen kann? oder welchen Sinn hat das?</p>
<p>Und warum macht man sowas?</p>
<pre><code class="language-cpp">class Base
{
 public:
 virtual void funktion()
 {
 cout&lt;&lt;&quot;eine funktion&quot;&lt;&lt;endl;
 }
};

class Member:public Base
{
 public:
 void funktion()
 {
 cout&lt;&lt;&quot;Auch eine funktion&lt;&lt;endl;
 }
};

void Funktion(Base&amp; b)
{
b.funktion();
}
</code></pre>
<p>aufruf im prog:</p>
<pre><code class="language-cpp">Base b;
Member m;
Funktion(b);
Funktion(m);

m.funktion();  //haben diese beiden Varianten einen unterschied?
b.funktion();  //ist es nicht egal ob Funktion(b) oder b.funktion??
</code></pre>
<p>so das sind meine fragen...vielleicht kanns mir einer erklären</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745556</guid><dc:creator><![CDATA[Klassenfrage]]></dc:creator><pubDate>Tue, 15 Mar 2005 22:08:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage (static Methoden, Methoden überschreiben) on Wed, 16 Mar 2005 05:37:21 GMT]]></title><description><![CDATA[<p>statische methoden oder statische membervariablen gehören zur klasse.<br />
eine einfache idee: stell dir vor, du möchtest die instanzen einer klasse zählen, so könntest du eine statische variable nutzen, die im konstruktor hochgezählt, und im destruktor runtergezählt wird.</p>
<p>zum zweiten: schau dir in einem geeigneten buch mal die seiten über polymorphie an. eines der wichtigsten dinge in der opjektorientierten programmierung.<br />
du kannst auch in den obig rechts zu findenen tutorials nachschaun.<br />
so long</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745590</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Wed, 16 Mar 2005 05:37:21 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage (static Methoden, Methoden überschreiben) on Wed, 16 Mar 2005 06:25:45 GMT]]></title><description><![CDATA[<p>ja, aber wofür static methoden? (die variablen sind mit klar)!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745604</guid><dc:creator><![CDATA[Klassenfrage]]></dc:creator><pubDate>Wed, 16 Mar 2005 06:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage (static Methoden, Methoden überschreiben) on Wed, 16 Mar 2005 06:34:25 GMT]]></title><description><![CDATA[<p>siehe einen tiefer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745605</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 16 Mar 2005 06:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage (static Methoden, Methoden überschreiben) on Wed, 16 Mar 2005 06:33:46 GMT]]></title><description><![CDATA[<p>Klassenfrage schrieb:</p>
<blockquote>
<p>ja, aber wofür static methoden? (die variablen sind mit klar)!</p>
</blockquote>
<p>z.b. um objekte der eigenen klasse anzulegen. wird z.b. bei design patterns (factory, singleton, etc) verwendet. (in java macht man das so. in c++ wird's wohl ähnlich sein)<br />
beispiel von da: <a href="http://www.javacoffeebreak.com/articles/designpatterns/" rel="nofollow">http://www.javacoffeebreak.com/articles/designpatterns/</a></p>
<pre><code class="language-java">public class SingletonObject
{
    private SingletonObject()
    {
        // no code req'd
    }

    public static SingletonObject getSingletonObject()
    {
      if (ref == null)
          // it's ok, we can call this constructor
          ref = new SingletonObject();
      return ref;
    }

    private static SingletonObject ref;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/745606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745606</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 16 Mar 2005 06:33:46 GMT</pubDate></item><item><title><![CDATA[Reply to Verständniss frage (static Methoden, Methoden überschreiben) on Wed, 16 Mar 2005 07:57:51 GMT]]></title><description><![CDATA[<p>Klassenfrage schrieb:</p>
<blockquote>
<p>Meine Frage, wofür nehme ich static Methoden?(mal ein einfaches praktisches Beispiel nennen, und wieso man das da macht)!</p>
</blockquote>
<p>Einsatzgebiete für statische Methoden gibts viele. Einfach mal die Augen offen halten. Das Singleton Pattern wurde ja schon genannt, es gibt aber noch mehr.</p>
<p>Ne Sache, die mir spontan einfällt, sind zB Policies. Diese kann man verwenden, um das Verhalten einer Klasse zu steuern. Bsp:</p>
<pre><code class="language-cpp">struct policy_add
{
    static int make_it_so(int lhs, int rhs)
    {
        return lhs + rhs;
    }
};

template &lt;class Policy&gt;
class foo
{
private:
    int a_;
    int b_;
public:
    int calculate() const
    {
        return Policy::make_it_so(a_, b_);
    }
    foo(int a, int b)
        : a_(a)
        , b_(b)
    {
    }
};

//...
foo&lt;policy_add&gt; a(50, 20);
int ergebnis = a.calculate();
// ergebnis ist jetzt 70
</code></pre>
<p>Wenn jetzt jemand will, dass nicht addiert sondern subtrahiert wird, definiert man sich einfach 'ne neue Policy und benutzt diese.</p>
<pre><code class="language-cpp">struct policy_sub
{
    static int make_it_so(int lhs, int rhs)
    {
        return lhs - rhs;
    }
};

//...
foo&lt;policy_sub&gt; a(50, 20);
int ergebnis = a.calculate();
// ergebnis ist jetzt 30
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/745643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745643</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 16 Mar 2005 07:57:51 GMT</pubDate></item></channel></rss>