<?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[Public Konstructor einer virtuellen Klasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es einen Unterschied, ob ich einen Konstruktor einer virtuellen Klasse<br />
protected oder public mache?<br />
Ich kann ja eh kein Objekt erzeugen und die erbende hat Zugriff...</p>
<p>Gruß,<br />
Franz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131086/public-konstructor-einer-virtuellen-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 02:37:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131086.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Dec 2005 20:01:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Fri, 30 Dec 2005 20:01:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es einen Unterschied, ob ich einen Konstruktor einer virtuellen Klasse<br />
protected oder public mache?<br />
Ich kann ja eh kein Objekt erzeugen und die erbende hat Zugriff...</p>
<p>Gruß,<br />
Franz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/953055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/953055</guid><dc:creator><![CDATA[Protector]]></dc:creator><pubDate>Fri, 30 Dec 2005 20:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Fri, 30 Dec 2005 21:02:44 GMT]]></title><description><![CDATA[<p>Protector schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>gibt es einen Unterschied, ob ich einen Konstruktor einer virtuellen Klasse<br />
protected oder public mache?<br />
Ich kann ja eh kein Objekt erzeugen und die erbende hat Zugriff...</p>
<p>Gruß,<br />
Franz</p>
</blockquote>
<p>Ich gehe mal davon aus das du mit virtueller Klasse ein Klasse mit virtuellen Funktionen meinst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Da gibt es dann natürlich einen Unterschied ob der Konstruktor public oder protected ist.<br />
Denn du kannst ja Objekte erzeugen, ganz anders bei einer abstrakten Klasse ( mind. eine <strong>rein</strong> virtuelle Funktion) da macht es dann wahrscheinlich keinen Unterschied, denn wie du schon gesagt hast kannst du eh keine Objekt dann von so einer Klasse erzeugen und da du dann sowieso ableiten musst und wenn du public ableiten solltest sollte es dann egal sein ob ctor in Base public oder protected <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/953118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/953118</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 30 Dec 2005 21:02:44 GMT</pubDate></item><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Mon, 02 Jan 2006 01:55:01 GMT]]></title><description><![CDATA[<p>wieso sollte das nicht gehen?</p>
<pre><code class="language-cpp">class A
{
	public:
    	A();
        virtual void DoSomething();
};

class B : public A
{
	public:
    	B();
        virtual void DoSomething();
};

A::A()
{
	ShowMessage(&quot;A Konstruktor&quot;);
}

B::B()
{
	ShowMessage(&quot;B Konstruktor&quot;);
}

void A::DoSomething()
{
	ShowMessage(&quot;A DoSomething&quot;);
}

void B::DoSomething()
{
	ShowMessage(&quot;B DoSomething&quot;);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
	A a;
    a.DoSomething();

    B b;
    b.DoSomething();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/954408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/954408</guid><dc:creator><![CDATA[huh?]]></dc:creator><pubDate>Mon, 02 Jan 2006 01:55:01 GMT</pubDate></item><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Mon, 02 Jan 2006 12:53:58 GMT]]></title><description><![CDATA[<p>huh? schrieb:</p>
<blockquote>
<p>wieso sollte das nicht gehen?</p>
<pre><code class="language-cpp">class A
{
	public:
    	A();
        virtual void DoSomething();
};

class B : public A
{
	public:
    	B();
        virtual void DoSomething();
};

A::A()
{
	ShowMessage(&quot;A Konstruktor&quot;);
}

B::B()
{
	ShowMessage(&quot;B Konstruktor&quot;);
}

void A::DoSomething()
{
	ShowMessage(&quot;A DoSomething&quot;);
}

void B::DoSomething()
{
	ShowMessage(&quot;B DoSomething&quot;);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
	A a;
    a.DoSomething();

    B b;
    b.DoSomething();
}
</code></pre>
</blockquote>
<p>Was willst du uns mit deinem Code sagen ??!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/954688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/954688</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 02 Jan 2006 12:53:58 GMT</pubDate></item><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Mon, 02 Jan 2006 13:42:31 GMT]]></title><description><![CDATA[<p>Protector schrieb:</p>
<blockquote>
<p>Ich kann ja eh kein Objekt erzeugen und die erbende hat Zugriff...</p>
</blockquote>
<p>das dies nicht stimmt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/954755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/954755</guid><dc:creator><![CDATA[huh?]]></dc:creator><pubDate>Mon, 02 Jan 2006 13:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Mon, 02 Jan 2006 13:49:49 GMT]]></title><description><![CDATA[<p>Und was habe ich ihm oben erklärt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Freak_Coder schrieb:</p>
<blockquote>
<p>virtueller Klasse ein Klasse mit virtuellen Funktionen meinst<br />
....<br />
Denn du kannst ja Objekte erzeugen</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Freak_Coder schrieb:</p>
<blockquote>
<p>ganz anders bei einer abstrakten Klasse ( mind. eine rein virtuelle Funktion) da macht es dann wahrscheinlich keinen Unterschied, denn wie du schon gesagt hast kannst du eh keine Objekt dann von so einer Klasse erzeugen.</p>
</blockquote>
<p>Und ich glaube der Thread-Starter meinte auch dies im Bezug auf Abstrakte Klassen.</p>
<p>:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/954761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/954761</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 02 Jan 2006 13:49:49 GMT</pubDate></item><item><title><![CDATA[Reply to Public Konstructor einer virtuellen Klasse on Mon, 02 Jan 2006 13:55:04 GMT]]></title><description><![CDATA[<p>Protector schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>gibt es einen Unterschied, ob ich einen Konstruktor einer virtuellen Klasse<br />
protected oder public mache?<br />
Ich kann ja eh kein Objekt erzeugen und die erbende hat Zugriff...</p>
<p>Gruß,<br />
Franz</p>
</blockquote>
<p>es ist wichtig, die korrekten begriffe zu verwenden, um missverständnissen vorzugbeugen:<br />
C++ kennt abstrakte Klassen, dass sind solche die wenigstens eine rein virtuelle member funktion (oder einen pure virtual destructor) haben. virtuelle klassen gibt es nicht, es gibt zwar virtualle <strong>Basis</strong>klassen, das ist aber kaum das, was du meinst, mit virtuellen funktionen hat es nichts zu tun.</p>
<p>ich nehme im folgenden an, dass du abstrakte klassen meinst. einen public construktor brauchst du immer dann, wenn du eine instanz genau dieser klasse erzeugen willst (und die erzeugende funktion kein member oder friend ist). Da eine abstrakte Klasse nicht instantiiert werden kann, macht es tatsächlich keinen praktischen unterschied. man könnte höchtens fragen, warum du überhaupt einen (selbst-definierten) konstruktor benötigst - meistens sollten abstrakte klassen selbst keine daten enthalten.<br />
ein protected konstruktor ist z.b. sinnvoll, wenn eine klasse nur basisklasse sein soll, aber nicht abstract ist. man könnte zwecks konsistenz argumentieren, dass diese regel dann auch für abstrakte klassen gelten soll. das ist aber eher geschmackssache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/954764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/954764</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 02 Jan 2006 13:55:04 GMT</pubDate></item></channel></rss>