<?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[Singelton Implementation in C++]]></title><description><![CDATA[<p>hi,<br />
ich versteh diesen quelltext (von wikipedia) nicht ganz:</p>
<p>Wo wird die static variable <code>instance</code> überhaupt <strong>initialisiert</strong>? Und warum ist sie nicht <strong>für die ganze Klasse</strong> static?</p>
<pre><code class="language-cpp">class Singleton
  {
    private:
      //Konstruktor private, damit man sich keine Instanzen holen kann.
      Singleton();
      //Den Kopierkonstruktor schützen um zu vermeiden, dass das Objekt unbeabsichtigt kopiert wird.
      Singleton(const Singleton&amp; cc);

    public:
      ~Singleton();
      static Singleton* getInstance();
  };

  Singleton* Singleton::getInstance()
  {
    static Singleton instance; 
    return &amp;instance; 
  };
</code></pre>
<p><a href="http://de.wikipedia.org/wiki/Singleton_%28Entwurfsmuster%29#Implementierung_in_C.2B.2B" rel="nofollow">http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)#Implementierung_in_C.2B.2B</a></p>
<p>danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256558/singelton-implementation-in-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 06:04:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256558.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Dec 2009 21:39:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Singelton Implementation in C++ on Mon, 14 Dec 2009 21:41:03 GMT]]></title><description><![CDATA[<p>hi,<br />
ich versteh diesen quelltext (von wikipedia) nicht ganz:</p>
<p>Wo wird die static variable <code>instance</code> überhaupt <strong>initialisiert</strong>? Und warum ist sie nicht <strong>für die ganze Klasse</strong> static?</p>
<pre><code class="language-cpp">class Singleton
  {
    private:
      //Konstruktor private, damit man sich keine Instanzen holen kann.
      Singleton();
      //Den Kopierkonstruktor schützen um zu vermeiden, dass das Objekt unbeabsichtigt kopiert wird.
      Singleton(const Singleton&amp; cc);

    public:
      ~Singleton();
      static Singleton* getInstance();
  };

  Singleton* Singleton::getInstance()
  {
    static Singleton instance; 
    return &amp;instance; 
  };
</code></pre>
<p><a href="http://de.wikipedia.org/wiki/Singleton_%28Entwurfsmuster%29#Implementierung_in_C.2B.2B" rel="nofollow">http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)#Implementierung_in_C.2B.2B</a></p>
<p>danke schon mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822560</guid><dc:creator><![CDATA[jakob190590]]></dc:creator><pubDate>Mon, 14 Dec 2009 21:41:03 GMT</pubDate></item><item><title><![CDATA[Reply to Singelton Implementation in C++ on Mon, 14 Dec 2009 21:44:33 GMT]]></title><description><![CDATA[<p>Die Initialisierung passiert in der Memberfunktion getInstance, wo die statische Variable instance erzeugt wird. Da diese static ist, passiert das genau einmal, nämlich bei dem erstem Aufruf. Ab dann wird lediglich die Referenz auf das Objekt zurückgegeben. Das funktioniert so, wegen dem static, dass die lokale Variable statisch (also während des gesammten Programmes verfügbar) macht. Die Konsequenz ist dann halt, dass du genau nur ein Objekt von diesem Typ haben kannst. (Was ja genau der Sinn einges Singletons ist).</p>
<p>Das ist übrigens das Meyers Singleton. Das sollte aber im Wiki Artikel stehen, aber wenn du nach dem Begriff suchst, dann findest du noch mehr Informationen dazu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822561</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 14 Dec 2009 21:44:33 GMT</pubDate></item><item><title><![CDATA[Reply to Singelton Implementation in C++ on Mon, 14 Dec 2009 21:53:52 GMT]]></title><description><![CDATA[<p>ah verstehe... (sorry, ich bin nicht so fit in c++)</p>
<p>und warum wird diese static-Variable automatisch erzeugt? also ohne Aufruf von <code>= new Singelton();</code><br />
Das liegt wohl daran dass instance static ist? und dann wird wohl der Standardkonstruktor verwendet?</p>
<p>in wikipedia gar nichts von &quot;meyers&quot;, aber jetzt kann ich auch besser selber danach suchen.</p>
<p>Dankeschön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822563</guid><dc:creator><![CDATA[jakob190590]]></dc:creator><pubDate>Mon, 14 Dec 2009 21:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Singelton Implementation in C++ on Mon, 14 Dec 2009 22:09:00 GMT]]></title><description><![CDATA[<p>Ja. *schnipp*<br />
Ich revidiere das da oben, falls du das bereits gesehen hast. <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>Grundsätzlich hat sie zwar schon gestummen, aber die Begriffe waren falsch. Aber wichtig ist hier, dass die statische Variable bis ans Ende des Programmes vorhanden ist, wenn sie einmal initialisiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822566</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 14 Dec 2009 22:09:00 GMT</pubDate></item><item><title><![CDATA[Reply to Singelton Implementation in C++ on Tue, 15 Dec 2009 09:07:20 GMT]]></title><description><![CDATA[<p>jakob190590 schrieb:</p>
<blockquote>
<p>Das liegt wohl daran dass instance static ist? und dann wird wohl der Standardkonstruktor verwendet?</p>
</blockquote>
<p>Hat nichts mit static zu tun, sondern es wird immer der Standardkonstruktor aufgerufen wenn nicht anders angegeben:</p>
<pre><code class="language-cpp">MeineKlasse c; // Ruft standardctor auf
MeineKlasse c(123); // Ruft ctor mit int als argument auf
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1822662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822662</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Tue, 15 Dec 2009 09:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to Singelton Implementation in C++ on Tue, 15 Dec 2009 15:01:10 GMT]]></title><description><![CDATA[<p>jakob190590 schrieb:</p>
<blockquote>
<p>und warum wird diese static-Variable automatisch erzeugt? also ohne Aufruf von <code>= new Singleton();</code><br />
Das liegt wohl daran dass instance static ist? und dann wird wohl der Standardkonstruktor verwendet?</p>
</blockquote>
<p>new Singleton(); schreibt meines Wissens nach ein Objekt vom Typ Singleton in den RAM, ruft den Konstruktor auf und gibt dann einen Zeiger auf das Objekt zurück. Du müsstest also new Singleton(); nur schreiben, wenn du einen Singleton* initialisieren willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822908</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Tue, 15 Dec 2009 15:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Singelton Implementation in C++ on Tue, 15 Dec 2009 16:31:26 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>new Singleton(); schreibt meines Wissens nach ein Objekt vom Typ Singleton in den RAM, ruft den Konstruktor auf und gibt dann einen Zeiger auf das Objekt zurück. Du müsstest also new Singleton(); nur schreiben, wenn du einen Singleton* initialisieren willst.</p>
</blockquote>
<p>ah ok. das war auch mein Problem; Bei Java gibt es ja keine Unterscheidung zwischen <code>Singleton*</code> und <code>Singleton</code> ;<br />
Bei Java muss man immer initialisieren mit <code>Singleton s = new Singleton();</code></p>
<p>ok, bei C++ muss man also nur Zeiger ( <code>Singleton* s</code> ) intialisieren - Variablen ( <code>Singleton s</code> ) werden automatisch initialisiert.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822999</guid><dc:creator><![CDATA[jakob190590]]></dc:creator><pubDate>Tue, 15 Dec 2009 16:31:26 GMT</pubDate></item></channel></rss>