# include <iostream>
# include <string>
using namespace std;
class student
{
public:
student(string m_name,int m_age)
{
name=m_name;
age=m_age;
}
bool operator== (student stu)
{
if(stu.age==this->age&&stu.name==this->name)
return true;
else
return false;
}
string name;
int age;
};
int main (void)
{
student stu1("aaa",18);
student stu2("aaa",18);
if(stu1==stu2)
cout<<"相等!"<<endl;
else
cout<<"不相等!"<<endl;
return 0;
}
五、函数调用运算符重载(仿函数)
# include <iostream>
using namespace std;
class function
{
public:
int operator()(int a,int b)
{
return a+b;
}
};
int main (void)
{
function fun;
int sum=fun(2,3);
cout<<sum<<endl;
int a=function()(2,3);//匿名函数对象
cout<<a<<endl;
return 0;
}
六、赋值运算符重载(就是深拷贝)
# include <iostream>
using namespace std;
class student
{
public:
int * num;
student(int a)
{
num=new int(a);
}
~student()
{
if (num!=NULL)
{
delete num;
num=NULL;
}
}
student& operator=(student stu)//其实就是深拷贝
{
if (num!=NULL)
{
delete num;
num=NULL;
}
num=new int(*stu.num);
return *this;
}
};
void test01()
{
student stu1(10);
student stu2(20);
student stu3(30);
stu1=stu2=stu3;
cout<<*stu1.num<<" "<<*stu2.num<<" "<<*stu3.num<<endl;
}
int main(int argc, char const *argv[])
{
test01();
return 0;
}