== 运算符重载结果不是想要的
class Point
{
public:
float x;
float y;
public:
Point(void);
public:
~Point(void);
Point(float x,float y);
// 两点是否相等
bool operator==(const Point p)const;
};
//两点是否相等
bool Point::operator==(const Point p)const
{
if(this->x==p.x && this->y==p.y)
return true;
else
return false;
}
class Edge
{
public:
Edge(void);
Edge(Point p1,Point p2);
bool operator==(const Edge e)const;
public:
~Edge(void);
public:
// 标识该边是否为边界
bool flag;
Point p1;
Point p2;
};
//两条边相等
bool Edge::operator==(const Edge e)const
{
if((this->p1==e.p1 && this->p2==e.p2)||(this->p1==e.p2 && this->p2==e.p1))
return true;
else
return false;
}
调用Edge对象的==时,不相等边如Edge( Point(1,15),Point(0,16))==( Point(1,15),Point(3,16))返回结果为真,调用堆栈中的内容却发现:this对象的p1=(1,15),p2=(3,16)而不是(1,15),(0,16)。这是怎么回事
相关推荐
C++ 重载运算符+==-用于字符串的比较
C++ ,VS2010平台编辑,下载后可以直接使用,模拟打分及求平均分的过程
C++之操作符重载探究(七):==运算符重载
前文:C++之操作符重载探究(六):重载函数调用符( ) == 运算符重载 在很多情况下,我们需要判断两个对象是否相等,需要对==运算符进行重载。 例1: //小问学编程 #include<iostream> using namespace std; class Person { public: Person(string name,int age) { m_name=name; m_age=age; } bool ope.
C++运算符重载规则详解
主要介绍了C++运算符重载规则详解,是C++入门学习中的基础知识,需要的朋友可以参考下
详解C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。 C++ 中的函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。 下面的实例中,同名函数 print() 被
C++ 重载运算符和重载函数
C++ 重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。 C++ 中的函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。 下面的实例中



