不关注实际的代码,只是阅读问题。 我有一个功能,需要两个参数类型多项式:复制构造函数的问题
FiniteFieldElement(int l, Polynomial p, Polynomial irr)
{
this->l = l;
this->p = p;
this->irr = irr;
}
我的理解是,当被传递P和IRR多项式的拷贝构造函数将被调用。
拷贝构造函数是否工作正常,因为我可以在最后一个断点验证。
Polynomial(const Polynomial& p)
{
degree = p.degree;
modulo = p.modulo;
if (polynomial != p.polynomial)
{
polynomial = new int[degree + 1];
for (int i = 0; i <= degree; i++)
{
polynomial[i] = p.polynomial[i];
}
}
}
但是为什么我得到实际参数p和irr的错误(未初始化)值。复制构造函数的结果和实际参数之间会出现什么内容?如果我将参数更改为参考参数,则它工作正常。 (注意:多项式没有析构函数,如果有帮助的话)。
编辑:如果我使用拷贝构造函数Polynomial p1(p2)
声明多项式,P1被正确初始化。在类FiniteFieldElement中,我收到错误的Polynomial参数。我完全被难住了。
如果'Polinomial'没有用户定义的析构函数你泄漏''polinomial' INT []' – Andrei 2013-05-11 17:11:11
你是如何确定这些参数是未初始化的,只是出于兴趣? – razlebe 2013-05-11 17:40:37
@Andrei是的,我知道。我只是想明确说明析构函数与这个错误无关。 – 2013-05-11 19:58:19