我看到有关此运算符的一个问题(What does assignment to *this do (*this = val)?)

但是从一个对象的行为中整体修改对象是否合乎逻辑?在OOP世界中有意义吗?

最佳答案

从设计的 Angular 来看,这是有意义的。我希望RectSizePoint类能够支持分配。从这种意义上讲,这些类型的类型(对我而言)应该像普通旧数据类型(POD)一样工作。

但是,如果我用汽车和卡车对交通模拟进行建模,那么我当然不会有指派运算符(operator)。设置一辆汽车等于另一辆汽车毫无意义。我可能会clone一辆汽车(制造一辆看起来像另一辆汽车的新汽车),但是一旦汽车被创建,它将永远是那辆汽车。它不能成为另一种汽车。

再举一个例子,考虑一个Person对象:

class Person
{
private:
    std::string m_Name;
};

您希望Person具有赋值运算符吗?不可以。一个人不能成为另一个人。但是,他的名字呢?当然!人员可以更改其名称,因此名称的赋值运算符非常合理。

因此,回答您的问题,在有意义的地方去做就很有意义了:)

08-17 03:58