【发布时间】:2019-04-16 02:52:00
【问题描述】:
我的 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;
}
main 调用的函数:
Mammal(bool x)
{
canSwim = x;
}
我希望输出复制这些值,但它从默认构造函数中将年龄和体重的值设置为 0。
【问题讨论】:
-
隐含的
boolconversion 正在进行。您的复制构造函数可以将其他 Mammal 作为 const 引用使用Mammal(const Mammal&)代替。您通过引用将对象传递给复制构造函数,调用Mammal w(x),而不是Mammal w(&x)。
标签: c++ inheritance copy-constructor