[C++] Optymalizacja kodu

0

Mam przeprowadzic badanie przeciazonego operatora + i porównac kilka przypadków.

Kod programu:

#include <iostream.h>
#include <conio.h>
#include <time.h>

class l_zes {
int re, im ;

public:
  friend l_zes operator+ (l_zes &a , l_zes&b);

  l_zes(int i=0, int j=0):re(i), im (j){}

  l_zes(const l_zes & z): re(z.re), im (z.im){}

  l_zes & operator = (const l_zes & z)
  {

  return *this;
  }

 ~l_zes(){}
};

//1 przyklad  czas = 63
<quote>l_zes operator+ (l_zes &a , l_zes&b)
{   l_zes lok;
	  lok.re = a.re + b.re;
	  lok.im = a.im + b.im;

    return lok;
}</quote>

int main(int argc, char* argv[])
{
clrscr();

l_zes A(0,0), B(1,1), Z(2,2);

__int64 a,b;

a=clock();
for(int i=0;i<1000000;i++) Z=A+B;
b=clock();

cout<<endl<<"czas = "<<b-a;

getchar();
return 0;
}

//2 przyklad czas = 32
l_zes operator+ (l_zes &a , l_zes&b)
{
return l_zes(a.re + b.re,a.im + b.im);
}

Prosze o podpowiedz, jak jeszcze mozna rozpisac operator + (niewazne jest jego szybkosc).

0

mozna jeszcze wstawic
operator jako skladowa klasy
ale wtedy bedzie problem
jezeli po lewej stronie operatora znajdzie sie typ wbudowany

0

Masz dwie możliwości zdefiniowania operatora+:

  1. jako niestatyczna funkcja składowa X::operator+(Y)
  2. jako dwuparametrowa funkcja zaprzyjaźniona operator+(X,Y)

Dalej masz możliwość definicji jako inline lub nie.

I ostanie co możesz zdefiniować to kod samej operacji: tu jedynie masz dwie podstawowe możliwości, które już wykorzystałeś ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1