C++ C++;类赋值运算符
我试图理解如何实现类对象。我想知道以下两个类赋值运算符之间的主要区别是什么C++ C++;类赋值运算符,c++,C++,我试图理解如何实现类对象。我想知道以下两个类赋值运算符之间的主要区别是什么 Point Point::operator=(const Point & p) { if(this == &p) return *this; m_x = p.m_x; m_y = p.m_y; return *this; } 这个呢 Point & Point::operator=(const Point & p) {
Point Point::operator=(const Point & p)
{
if(this == &p)
return *this;
m_x = p.m_x;
m_y = p.m_y;
return *this;
}
这个呢
Point & Point::operator=(const Point & p)
{
if(this == &p)
return *this;
m_x = p.m_x;
m_y = p.m_y;
return *this;
}
我可以看到,后一个返回一个对象的引用,但我看不出任何实际的区别。例如,当我尝试这样做时,这两种方法都很好:
Point point2, point3;
point3 = point2 = point1;
确定的可能重复,这很有用,谢谢。第一个会生成一个额外的副本。另外:这两个赋值运算符都是无效的、未定义的行为。仅当两个类实例都是同一数组/向量的成员时,才定义将一对原始指针与类实例进行比较。在几乎所有的C++实现中,任何这种类型的指针比较都会产生预期的结果,但是这在技术上是不可移植的、无效的C++。