<?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[Komischer Konstruktoraufruf]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier eine Klasse geschrieben welche mit grossen Zahlen arbeiten kann.<br />
Nun habe ich mehrere Konstruktoren deklariert um die Basisdatentypen int unsigned long short char usw. in die neue Klasse BigNumber zu konvertieren.</p>
<p>Mein Problem ist jetzt folgendes:</p>
<p>schreibe ich sowas wie</p>
<p>unsigned char l = 255;</p>
<p>BigInteger num = l;</p>
<p>so wird mir statt des vordefinierten Konstruktors</p>
<p>BigInteger::BigInteger(unsigned char); der Konstruktor</p>
<p>BigInteger::BigInteger(int); aufgerufen kann mir das jemand mal erklären wieso?</p>
<p>Schreibe ich stattdessen explizit</p>
<p>BigInteger num = (unsigned char)l; so gehts. Wieso zur Hölle?</p>
<p>Für die initialisierung hatte ich mir überlegt eine parametrisierte Funktion zu schreiben die in etwa so arbeitet:</p>
<p>template&lt;typename T&gt;<br />
inline void initialize(T t){<br />
int countBlks =sizeof(T)/MAX_SIZE_OF_BLK;<br />
cap = countBlks;<br />
blk = new Blk[countBlks];<br />
len = countBlks;<br />
for (int i=0;i&lt;countBlks;i++){<br />
BlkType temp = t &gt;&gt; (i*MAX_SIZE_OF_BLK);<br />
blk[i] = Blk(temp);<br />
}</p>
<p>}</p>
<p>so nun ist sizeof(t) zur Laufzeitauswertung aber 0 und enthält nicht die Länge des Datentyps warum?</p>
<p>^^^^</p>
<p>Hat sich erledigt, habe den = Operator überschrieben und der kann nur ints<br />
<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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/258764/komischer-konstruktoraufruf</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 04:53:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258764.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Jan 2010 19:43:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komischer Konstruktoraufruf on Thu, 14 Jan 2010 19:56:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier eine Klasse geschrieben welche mit grossen Zahlen arbeiten kann.<br />
Nun habe ich mehrere Konstruktoren deklariert um die Basisdatentypen int unsigned long short char usw. in die neue Klasse BigNumber zu konvertieren.</p>
<p>Mein Problem ist jetzt folgendes:</p>
<p>schreibe ich sowas wie</p>
<p>unsigned char l = 255;</p>
<p>BigInteger num = l;</p>
<p>so wird mir statt des vordefinierten Konstruktors</p>
<p>BigInteger::BigInteger(unsigned char); der Konstruktor</p>
<p>BigInteger::BigInteger(int); aufgerufen kann mir das jemand mal erklären wieso?</p>
<p>Schreibe ich stattdessen explizit</p>
<p>BigInteger num = (unsigned char)l; so gehts. Wieso zur Hölle?</p>
<p>Für die initialisierung hatte ich mir überlegt eine parametrisierte Funktion zu schreiben die in etwa so arbeitet:</p>
<p>template&lt;typename T&gt;<br />
inline void initialize(T t){<br />
int countBlks =sizeof(T)/MAX_SIZE_OF_BLK;<br />
cap = countBlks;<br />
blk = new Blk[countBlks];<br />
len = countBlks;<br />
for (int i=0;i&lt;countBlks;i++){<br />
BlkType temp = t &gt;&gt; (i*MAX_SIZE_OF_BLK);<br />
blk[i] = Blk(temp);<br />
}</p>
<p>}</p>
<p>so nun ist sizeof(t) zur Laufzeitauswertung aber 0 und enthält nicht die Länge des Datentyps warum?</p>
<p>^^^^</p>
<p>Hat sich erledigt, habe den = Operator überschrieben und der kann nur ints<br />
<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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1839002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839002</guid><dc:creator><![CDATA[Procrash]]></dc:creator><pubDate>Thu, 14 Jan 2010 19:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer Konstruktoraufruf on Fri, 15 Jan 2010 08:25:45 GMT]]></title><description><![CDATA[<p>Gut daß Du es herausgefunden hast.</p>
<p>Aber was noch wichtig wäre hervorzuheben ist, daß</p>
<pre><code>BigInteger num = l;
</code></pre>
<p>eigentlich erst einmal den Default cto aufruft und dann den assignment operator (=) ausführt. Sprich der Code, den der Compiler generiert, sieht eigentlich so aus:</p>
<pre><code>BigInteger num()
num = l;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1839109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839109</guid><dc:creator><![CDATA[Carstig]]></dc:creator><pubDate>Fri, 15 Jan 2010 08:25:45 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer Konstruktoraufruf on Fri, 15 Jan 2010 08:40:11 GMT]]></title><description><![CDATA[<p>Carstig schrieb:</p>
<blockquote>
<p>Sprich der Code, den der Compiler generiert, sieht eigentlich so aus:</p>
<pre><code>BigInteger num()
num = l;
</code></pre>
</blockquote>
<p>Nein, das hat nichts mit Zuweisungsoperator zu tun, das ruft sehrwohl wunderbar den normalen Konstruktor auf. Ein kleines Testprogramm zeigt dir so etwas sofort:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

struct Test
{
    Test()
    {
        cout &lt;&lt; &quot;Default Constructor&quot; &lt;&lt; endl;
    }

    Test( int num )
    {
        cout &lt;&lt; &quot;Construct with num = &quot; &lt;&lt; num &lt;&lt; endl;
    }

    Test(const Test&amp; other)
    {
        cout &lt;&lt; &quot;Copy Constructor Constructor&quot; &lt;&lt; endl;
    }

    Test&amp; operator=(const Test&amp; other)
    {
        cout &lt;&lt; &quot;Operator =&quot; &lt;&lt; endl;
    }
};

int main()
{
    cout &lt;&lt; &quot;-----&quot; &lt;&lt; endl;
    Test me = 1;
    cout &lt;&lt; &quot;-----&quot; &lt;&lt; endl;
    Test org;
    Test t;
    t = org;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>-----
Construct with num = 1
-----
Default Constructor
Default Constructor
Operator =
</code></pre>
<p>zwischen den &quot;-----&quot; siehst du keine Default Constructor, Copy Constructor oder sonstwas, nur die eine Zeile!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839115</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 15 Jan 2010 08:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer Konstruktoraufruf on Fri, 15 Jan 2010 08:52:07 GMT]]></title><description><![CDATA[<p>Carstig schrieb:</p>
<blockquote>
<p>Aber was noch wichtig wäre hervorzuheben ist, daß</p>
<pre><code>BigInteger num = l;
</code></pre>
<p>eigentlich erst einmal den Default cto aufruft und dann den assignment operator (=) ausführt. Sprich der Code, den der Compiler generiert, sieht eigentlich so aus:</p>
<pre><code>BigInteger num()
num = l;
</code></pre>
</blockquote>
<p>Nein. Das stimmt nicht! Das hast Du Dir entweder selbst (falsch) zusammengereimt, oder falsch übernommen. Die erste Zeile stellt eine &quot;Kopier-Initialisierung&quot; dar. Das hat nichts mit Default-Konstruktoren oder Assignment-Operatoren zu tun!</p>
<p>Außerdem ist <code>BigInteger num();</code> eine Funktionsdeklaration!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839124</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 15 Jan 2010 08:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer Konstruktoraufruf on Fri, 15 Jan 2010 12:39:18 GMT]]></title><description><![CDATA[<p>humhom - man lernt nie aus... Also mal dick Danke für die Richtigstellung. V.a. das mit der Funktionsdeklaration ist im Nachhinein mehr als offensichtlich.</p>
<p>Aber folgender Code ist doch dann recht inneffektiv, oder?</p>
<pre><code>BigInteger num; // deklaration von num und ausführung des default-ctor
num = l; // assignment operator
</code></pre>
<p>Kopierinitialisierung - kann ich darunter den copy-ctor verstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839241</guid><dc:creator><![CDATA[Carstig]]></dc:creator><pubDate>Fri, 15 Jan 2010 12:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Komischer Konstruktoraufruf on Fri, 15 Jan 2010 13:45:37 GMT]]></title><description><![CDATA[<p>GIYF</p>
<p><a href="http://www.gotw.ca/gotw/036.htm" rel="nofollow">http://www.gotw.ca/gotw/036.htm</a></p>
<p>Carstig schrieb:</p>
<blockquote>
<p>Aber folgender Code ist doch dann recht inneffektiv, oder?</p>
<pre><code>BigInteger num; // deklaration von num und ausführung des default-ctor
num = l; // assignment operator
</code></pre>
</blockquote>
<p>kommt auf die Implementierung von BigInteger an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1839286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1839286</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 15 Jan 2010 13:45:37 GMT</pubDate></item></channel></rss>