C++对象的比较

1. 如果对象的class没有重载运算符==函数,那么两个对象是不能直接比较的,原因在于class不会默认提供重载运算符函数

ps:除了赋值运算符= 提供了默认函数(默认只是复制对象本身的内存空间 )外,其他运算符函数需要显式提供 ,才能使用。

root@romulus-laptop:/work/test/operator# cat main.c
#include
#include"student.h"
int main(void)
{
    student stu1;
    student stu2;
    if(stu1 == stu2)
    {
        printf("stu1 is equals with stu2./n");
    }
     else
    {
        printf("stu1 is not equals with stu2./n");
    }
}
root@romulus-laptop:/work/test/operator# cat student.h
class student
{
public:
    //bool operator == (const student& s);
};
root@romulus-laptop:/work/test/operator# cat student.cpp
#include"student.h"
/*bool
student::operator == (const student & s)
{
    if (this == &s)
    {
        return true;
    }
    else
    {
        return false;
    }
}*/
root@romulus-laptop:/work/test/operator# g++ -o main *.c *.cpp
main.c: In function ‘int main()’:
main.c:7: error: no match for ‘operator==’ in ‘stu1 == stu2’

 

2. 如果给class提供重载运算符==函数,那么两个class的对象就可以比较了

root@romulus-laptop:/work/test/operator# cat student.h student.cpp
class student
{
public:
    bool operator == (const student& s);
};
#include"student.h"
bool
student::operator == (const student & s)
{
    if (this == &s)
    {
        return true;
    }
    else
    {
        return false;
    }
}
root@romulus-laptop:/work/test/operator# g++ -o main *.c *.cpp
root@romulus-laptop:/work/test/operator# ./main
stu1 is not equals with stu2.

你可能感兴趣的:(基础)