gpt4 book ai didi

c++ - 使用其行为之一来修改整个对象是否有意义?在赋值运算符内部使用 this 指针进行重载?

转载 作者:行者123 更新时间:2023-11-30 04:36:11 26 4
gpt4 key购买 nike

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

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

最佳答案

从设计的角度来看,它才有意义。例如,我希望 RectSizePoint 类支持赋值。从这个意义上说,这些类型(对我而言)应该表现得像普通旧数据类型 (POD)。

但如果我要对汽车和卡车进行交通模拟建模,我肯定不会有赋值运算符。将一辆车设置为与另一辆车相同是没有任何意义的。我可能会克隆一辆汽车(制作一辆看起来和另一辆一样的新车),但一旦汽车被创造出来,它就永远是那辆汽车。它不能成为另一种汽车。

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

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

您希望 Person 有赋值运算符吗?不可以。一个人不能成为另一个人。然而,他的名字呢?当然!一个人可以改变他的名字,所以名字上的赋值运算符非常有意义。

所以要回答你的问题,在有意义的地方做是有意义的:)

关于c++ - 使用其行为之一来修改整个对象是否有意义?在赋值运算符内部使用 this 指针进行重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4734963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com