我看到有关此运算符的一个问题(What does assignment to *this do (*this = val)?)
但是从一个对象的行为中整体修改对象是否合乎逻辑?在OOP世界中有意义吗?
最佳答案
从设计的 Angular 来看,这是有意义的。我希望Rect
,Size
和Point
类能够支持分配。从这种意义上讲,这些类型的类型(对我而言)应该像普通旧数据类型(POD)一样工作。
但是,如果我用汽车和卡车对交通模拟进行建模,那么我当然不会有指派运算符(operator)。设置一辆汽车等于另一辆汽车毫无意义。我可能会clone
一辆汽车(制造一辆看起来像另一辆汽车的新汽车),但是一旦汽车被创建,它将永远是那辆汽车。它不能成为另一种汽车。
再举一个例子,考虑一个Person
对象:
class Person
{
private:
std::string m_Name;
};
您希望
Person
具有赋值运算符吗?不可以。一个人不能成为另一个人。但是,他的名字呢?当然!人员可以更改其名称,因此名称的赋值运算符非常合理。因此,回答您的问题,在有意义的地方去做就很有意义了:)