簡體   English   中英

復制構造函數和賦值運算符都被調用

[英]Copy constructor and assignment operator both get called

我有以下程序片段:

Polynomial Polynomial:: add(const Polynomial b)
{
    Polynomial c;
    c.setRoot(internalAdd(root, c.root));
    c.setRoot(internalAdd(b.root, c.root));
    return c;
}

c = (a.add(b));

據我了解,該代碼假設將a和b加在一起,然后通過調用復制構造函數將所得多項式分配給c。

但是,當我實際測試時,

  • c立即調用復制構造函數並嘗試復制b,
  • 然后a和b加
  • 然后c嘗試通過賦值運算符獲得結果多項式
  • 然后程序崩潰

我該怎么解決?

Polynomial Polynomial::add(const Polynomial& b)
                                           ^

如果您不希望復制該參數,請像上面一樣將其作為參考傳遞。

這可能不會解決您的崩潰問題-如果沒有更多的代碼(也無法進行一些調試以查明原因),就無法說出是什么原因導致的崩潰,但是它將消除對復制構造多項式參數的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM