Darkstar
06/12/2004, 17:41
#include <iostream>
#include <stdlib>
#include <vcl.h>
#include <algorithm>
#include <vector>
using namespace std;
class Cat
{
public:
int x, y;
Cat(int a) { x = a; }
// sort algoritmasını kullanabilmek için gerekli
friend bool operator==(const Cat& left, const Cat& right);
friend bool operator<(const Cat& left, const Cat& right);
// standard < operatörü
bool operator<(const Cat& right)
{
cout<<"burda member olan op< kullanıldı\n";
return x < right.x;
}
};
bool operator==(const Cat& left, const Cat& right)
{
cout<<"friend op== cagırıldı\n";
return left.x == right.x ;
}
bool operator<(const Cat& left, const Cat& right)
{
cout<<"firend op< cagırıldı\n";
return (left.x < right.x) ;
}
int main(int argc, char* argv[])
{
vector<Cat> v;
vector<Cat>::iterator myiterator;
Cat kaplan(10);
Cat arslan(30);
Cat panter(30);
Cat pisicik(40);
v.push_back(kaplan);
v.push_back(arslan);
v.push_back(pisicik);
v.push_back(panter);
sort( v.begin(), v.end());
int i;
for(i=0;i<v.size();i++)
cout<<v[i].x<<endl;
if (kaplan < arslan)
cout<<"burda member olan op< kullanıldı\n";
getchar();
return 0;
}
Soru şu: Neden sort() algoritmasında "member op.<" kullanılmıyor da friend olarak harici tanımladığımız çift argumanlı op< kullanılıyor?
#include <stdlib>
#include <vcl.h>
#include <algorithm>
#include <vector>
using namespace std;
class Cat
{
public:
int x, y;
Cat(int a) { x = a; }
// sort algoritmasını kullanabilmek için gerekli
friend bool operator==(const Cat& left, const Cat& right);
friend bool operator<(const Cat& left, const Cat& right);
// standard < operatörü
bool operator<(const Cat& right)
{
cout<<"burda member olan op< kullanıldı\n";
return x < right.x;
}
};
bool operator==(const Cat& left, const Cat& right)
{
cout<<"friend op== cagırıldı\n";
return left.x == right.x ;
}
bool operator<(const Cat& left, const Cat& right)
{
cout<<"firend op< cagırıldı\n";
return (left.x < right.x) ;
}
int main(int argc, char* argv[])
{
vector<Cat> v;
vector<Cat>::iterator myiterator;
Cat kaplan(10);
Cat arslan(30);
Cat panter(30);
Cat pisicik(40);
v.push_back(kaplan);
v.push_back(arslan);
v.push_back(pisicik);
v.push_back(panter);
sort( v.begin(), v.end());
int i;
for(i=0;i<v.size();i++)
cout<<v[i].x<<endl;
if (kaplan < arslan)
cout<<"burda member olan op< kullanıldı\n";
getchar();
return 0;
}
Soru şu: Neden sort() algoritmasında "member op.<" kullanılmıyor da friend olarak harici tanımladığımız çift argumanlı op< kullanılıyor?