gpt4 book ai didi

c++ - 运算符重载 c++ (=)

转载 作者:太空狗 更新时间:2023-10-29 23:33:30 25 4
gpt4 key购买 nike

重载 = 运算符后,

const Warrior& Warrior::operator = (const Warrior& warriorObj)
{
if (this != &warriorObj)
{
name = warriorObj.name;
start = warriorObj.start;
alignment = warriorObj.alignment;
strength = warriorObj.strength;
craft = warriorObj.craft;
gold = warriorObj.gold;
life = warriorObj.life;
fate = warriorObj.fate;
specialAbility = warriorObj.specialAbility;
numberOfObjects = warriorObj.numberOfObjects;
}
return *this;
}

一旦我在驱动程序中创建了 2 个勇士:

    Warrior *w1, *w2;

w1 = new Warrior();
w2 = new Warrior();

w1 = w2;

如果我更改 w1 的参数之一,它也会将 w2 的参数更改为相同的参数...

我哪里错了?

最佳答案

重载运算符不会被调用,因为您正在分配指针。你可以使用

*w1 = *w2;

或者,更好的是,根本不使用动态对象:

Warrior w1, w2;
w1 = w2;

关于c++ - 运算符重载 c++ (=),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591443/

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