如何修复传递参数时调用错误函数的主函数?(C++)

How to fix main function calling the incorrect function when passing parameters? (c++)

本文关键字:函数 C++ 错误 何修复 参数 调用      更新时间:2023-10-16

我有一个CS类的项目,我已经编写了一个复制构造函数,并将该类的一个对象传递给其中,但主要是调用错误的构造函数。

主要:

Mammal x;
cout << "Initial values for x: ";
cout << "Age = " << x.getAge() << " Weight = " << x.getWeight() << endl;
x.setAge(10);
x.setWeight(123);
cout << "Modified values for x: ";
cout << "Age = " << x.getAge() << " Weight = " << x.getWeight() << endl;
Mammal w(&x);
cout << "nModified values for w: ";
cout << "Age = " << w.getAge() << " Weight = " << w.getWeight() << endl;
w.sound();

复制构造函数:

Mammal(Mammal &x)
{
this->canSwim = x.canSwim;
}

主函数正在调用:

Mammal(bool x)
{
canSwim = x;
}

我希望输出复制值,但它将默认构造函数中的年龄和权重值设置为 0。

当你通过引用传递时,你不使用&来获取某物的地址。

请尝试以下操作:

Mammal w(x);

另外,我建议使用编译标志-Wall -Wextra,因为它们可能会提醒您注意此问题。

复制构造函数只复制 canSwim 属性。 您必须明确告知要复制的属性:

Mammal(Mammal &x)
{
this->canSwim = x.canSwim;
this->age = x.age;
this->weight = x.weight;
...
}

正如@Jeffrey Cash所指出的,你应该从构造函数调用中删除"&"。