<?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[Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren .]]></title><description><![CDATA[<p>Hey Leute ich hab da ein kleines Problemchen , wie bekomme ich es hin das mein Programm folge Zeile richtig interpretiert .</p>
<pre><code class="language-cpp">cout &lt;&lt; “PRODUKT: “ &lt;&lt; 3*c1*c2 &lt;&lt; endl;
</code></pre>
<p>c1 und c2 sind Instanzen der Klasse complex mit</p>
<pre><code class="language-cpp">double re; 
double im;
</code></pre>
<p>Mein Ansatz ist folgender , allerdings erfolglos ...</p>
<pre><code class="language-cpp">complex&amp; operator *(const complex&amp; rhs)
	{   double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re*rhs.re;
		im1 = this-&gt;im*rhs.im;
		Cc = new complex(re1,im1);
		return *Cc;
	}

	complex&amp; operator *(const int&amp; rhs)
	{
		double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re*rhs;
		im1 = this-&gt;im*rhs;
		Cc = new complex(re1,im1);
		return *Cc;

	}
</code></pre>
<p>Bitte um Hilfe , bzw Tips , Lösungsansätze , bitte nicht den ganzen Lösungsweg aufschreiben ....</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265057/operator-für-komplexe-zahlen-für-folgende-zeile-3-c1-c2-redefinieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 09:38:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265057.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Apr 2010 09:32:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 09:32:17 GMT]]></title><description><![CDATA[<p>Hey Leute ich hab da ein kleines Problemchen , wie bekomme ich es hin das mein Programm folge Zeile richtig interpretiert .</p>
<pre><code class="language-cpp">cout &lt;&lt; “PRODUKT: “ &lt;&lt; 3*c1*c2 &lt;&lt; endl;
</code></pre>
<p>c1 und c2 sind Instanzen der Klasse complex mit</p>
<pre><code class="language-cpp">double re; 
double im;
</code></pre>
<p>Mein Ansatz ist folgender , allerdings erfolglos ...</p>
<pre><code class="language-cpp">complex&amp; operator *(const complex&amp; rhs)
	{   double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re*rhs.re;
		im1 = this-&gt;im*rhs.im;
		Cc = new complex(re1,im1);
		return *Cc;
	}

	complex&amp; operator *(const int&amp; rhs)
	{
		double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re*rhs;
		im1 = this-&gt;im*rhs;
		Cc = new complex(re1,im1);
		return *Cc;

	}
</code></pre>
<p>Bitte um Hilfe , bzw Tips , Lösungsansätze , bitte nicht den ganzen Lösungsweg aufschreiben ....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884165</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sat, 17 Apr 2010 09:32:17 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 09:36:38 GMT]]></title><description><![CDATA[<blockquote>
<p>c1 und c2 sind Instanzen der Klasse complex mit</p>
</blockquote>
<p>Meinst du std::complex? Bei std::complex sind diese Operatoren nämlich schon <a href="http://www.cplusplus.com/reference/std/complex/complex/operators/" rel="nofollow">dabei</a>.</p>
<p>Lies dir am besten auch <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html" rel="nofollow">das hier</a> durch.</p>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884168</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Sat, 17 Apr 2010 09:36:38 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 09:43:00 GMT]]></title><description><![CDATA[<p>Ja nein , der Sinn der Sache ist ja dies selber zu programmieren , also für unsere eigene Klasse complex .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884171</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sat, 17 Apr 2010 09:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 09:51:42 GMT]]></title><description><![CDATA[<p>Definier einfach einen globalen <code>complex operator*(int, const complex&amp;)</code> .<br />
Übrigens erzeugst du da ein schönes Memory-leak bei dir, weil du das zu returnende Objekt mit new anlegst. Böse. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1884174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884174</guid><dc:creator><![CDATA[jokester]]></dc:creator><pubDate>Sat, 17 Apr 2010 09:51:42 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 10:17:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

struct complx
{
  double re, im;

  /// Dies hier ist auch ein &quot;Konvertierungskonstruktor&quot;
  /// da das explicit Schlüsselwort nicht auftaucht und
  /// der Konstruktor mit &quot;einem Parameter aufrufbar&quot; ist.
  complx(double r=0, double i=0) : re(r), im(i) {}
};

complx operator*(complx a, complx b)
{
  return complx(
    a.re*b.re-a.im*b.im,
    a.re*b.im+a.im*b.re
  );
}

int main() {
  complx a (2,3);
  complx b = 5 * a;
  complx c = a * 5;
  complx d = b*c;
  std::cout &lt;&lt; b.re &lt;&lt; ' ' &lt;&lt; b.im &lt;&lt; '\n';
  std::cout &lt;&lt; c.re &lt;&lt; ' ' &lt;&lt; c.im &lt;&lt; '\n';
  std::cout &lt;&lt; d.re &lt;&lt; ' ' &lt;&lt; d.im &lt;&lt; '\n';
}
</code></pre>
<p>Das funktioniert, weil<br />
(1) operator* hier eine freie Funktion ist<br />
(2) complx einen Konvertierungskonstruktor hat</p>
<p>Bei 5*a wird zunächst der int 5 automatisch zu complx konvertiert und dann der benutzerdefinierte operator* aufgerufen. Wenn Du operator* als Elementfunktion (&quot;Methode&quot;) implementierst, muss auf der linken Seite schon ein complx-Objekt stehen, damit die Funktion aufgerufen werden kann.</p>
<p>Du kannst natürlich weitere operator* Funktionen anbieten, die direkt doubles verarbeiten können:</p>
<pre><code class="language-cpp">complx operator*(complx, double);
complx operator*(double, complx);
</code></pre>
<p>Damit könntest Du noch 2 Multiplikationen und 2 Additionen jeweils sparen. Aber notwendig ist das nicht, dank des Konvertierungskonstruktors.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884182</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 17 Apr 2010 10:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 10:44:09 GMT]]></title><description><![CDATA[<p>Wie implemetiere ich dies dann in den folgenden Code ???<br />
Ich verstehe das irgenwie nicht ...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class complex
{   

	private: 
	double re; 
	double im;

	public :
	complex(double real_part=0,double imag_part=0);

	friend ostream&amp; operator &lt;&lt;(ostream&amp; out,const complex&amp; rhs) 
	{
		return out &lt;&lt; rhs.re &lt;&lt; &quot; + &quot; &lt;&lt; rhs.im &lt;&lt; 'i';    
	} 

	complex&amp; operator + (const complex&amp; rhs)
	{   double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re + rhs.re;
		im1 = this-&gt;im + rhs.im;
		Cc = new complex(re1,im1);
		return *Cc;
	}

	complex&amp; operator *(const complex&amp; rhs)
	{   double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re*rhs.re;
		im1 = this-&gt;im*rhs.im;
		Cc = new complex(re1,im1);
		return *Cc;
	}

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1884195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884195</guid><dc:creator><![CDATA[Bacid90210]]></dc:creator><pubDate>Sat, 17 Apr 2010 10:44:09 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 11:19:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie implemetiere ich dies dann in den folgenden Code ???</p>
</blockquote>
<p>Lies doch einfach mal den Artikel über Operatorüberladung, den ich vorher verlinkt habe.</p>
<p>Da steht z.B., dass man z.B. die binäre Addition mit Hilfe der unären Addition (oder wie ist der deutsche Begriff für &quot;compound&quot;) implementieren sollte.<br />
D.h. du machst so etwas:</p>
<pre><code class="language-cpp">class complex
{
public:
  complex(const double real = 0, const double imag = 0): re(real), im(imag) { }

  complex&amp; operator+=(const complex&amp; rhs)
  {
    re += rhs.re;
    im += rhs.im;
    return *this;
  }

private:
  double re, im;
};

const complex operator+(const complex&amp; lhs, const complex&amp; rhs)
{
  complex temp(lhs);
  lhs += rhs; // Hier ist der &quot;Trick&quot;, da man auf den vorher definierten operator+= zugreift
  return temp;
}
</code></pre>
<p>Habe den Code nicht getestet, aber der sollte so funktionieren.</p>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884209</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Sat, 17 Apr 2010 11:19:48 GMT</pubDate></item><item><title><![CDATA[Reply to Operator * für komplexe Zahlen für folgende Zeile : 3*c1*c2 redefinieren . on Sat, 17 Apr 2010 15:13:06 GMT]]></title><description><![CDATA[<p>Bacid90210 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">complex&amp; operator + (const complex&amp; rhs)
	{   double re1;
		double im1;
		complex *Cc;
		re1 = this-&gt;re + rhs.re;
		im1 = this-&gt;im + rhs.im;
		Cc = new complex(re1,im1);
		return *Cc;
	}
</code></pre>
</blockquote>
<p>Tipp: operator+ nicht als Elementfunktion implementieren. Das mit dem new und &amp; ist auch sehr unüblich. Man merkt Dir an, dass Du von einer anderen Sprache kommst, in der Objekte nur per new angelegt werden können. Hier ist das zu vermeiden. Das gleiche gilt für operator+. Implementiere die beiden als friend und lass das mit dem new/referenz blödsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884299</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 17 Apr 2010 15:13:06 GMT</pubDate></item></channel></rss>