Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2006-11-23 18:27:25

  BiExi - matka przelozona

BiExi
matka przelozona
Skąd: Gorlice
Zarejestrowany: 2004-04-16
Serwis

c++ przeciazenie operatorow

pod shitem dziala ale ciekawe jak to robic pod linuxem chodzi mi generalnie  przeciazenie operatorow 2 argumentowych takich jak + - * /

przykład

Kod:

#include <iostream.h>

class kwadrat{
  private:
   int a;

  public:
  kwadrat()
   {a=1}

  kwadrat (kwadrat & x)
  {
    a = x.a;
  }

  kwadrat (int a0)
  {
    a=a0;
  }

  void operator-=(kwadrat & kw)
  {
    this->a-=kw.a;
  }

  kwadrat & operator=(kwadrat & kw)
  {
    a=kw.a;
    return *this;
  }

  kwadrat operator-(kwadrat & kwa)
  {
   return kwadrat(a-kwa.a);
  }

   ~kwadrat() {}

    friend ostream& operator<<(ostream & os, kwadrat & xx);

};


ostream & operator<<(ostream & os, kwadrat & xx)
 {
   os << xx.a << endl;
   return os;
 }

int main(void)
{
 kwadrat cos cos1(10), cos2(7);
 cout << "pocz cos1=" << cos1;
 cout << "pocz cos2=" << cos2;
 cout <<" cos = cos1 - cos2" << endl;
 cos = cos1 - cos2;
 cout << "cos=" << cos;
 cout << "cos=" << cos1;
 cout << "cos=" << cos2;
 return 0;
}

[url=http://dug.net.pl][b]DUG[/b][/url]

Offline

 

#2  2006-11-23 20:17:34

  tomek - Członek DUG

tomek
Członek DUG
Skąd: Wroclaw
Zarejestrowany: 2006-10-20

Re: c++ przeciazenie operatorow

np. tak:

Kod:

kwadrat& operator+ (kwadrat ka, const kwadrat& kb)
{
  return ka+= kb;
}

w tym przykladzie musisz miec oczywiscie wczeniej napisany operator +=

Kod:

kwadrat& kwadrat::operator+=(const kwadrat& kw)
{
  a = kw.a;
  return *this;
}

i tak samo robisz - * / % i co tam jeszcze sie da dwuargumentowego.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.009 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00107 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.227.192' WHERE u.id=1
0.00203 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.227.192', 1732282941)
0.00072 SELECT * FROM punbb_online WHERE logged<1732282641
0.00060 DELETE FROM punbb_online WHERE ident='66.249.66.74'
0.00057 DELETE FROM punbb_online WHERE ident='85.208.96.211'
0.00066 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=5917 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00105 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=5917 ORDER BY p.id LIMIT 0,25
0.00069 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=5917
Total query time: 0.00758 s