不關注實際的代碼,只是閱讀問題。 我有一個功能,需要兩個參數類型多項式:複製構造函數的問題
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