解決「不存在預設建構函式」的問題

2021-10-22 03:09:44 字數 1028 閱讀 2119

我在學加法運算子過載,我在類person裡建了乙個返回型別為類person的運算子過載的函式,在這個函式裡我建了個物件temp;

我想實現  :物件p1+物件p2

但是報錯了,錯誤為:類 "person" 不存在預設建構函式

#includeusing namespace std;

class person ;

person operator+(const person& p)

person(int age_a, int age_b)

public:

int age_a;

int age_b;

};void test()

int main()

解決方法:在person類中先建立個無參的建構函式型別;

有了這個型別你才能建立這種型別的物件;

#include using namespace std;

class person ;

person operator+(person& p)

int m_a;

int m_b;

};void test()

int main()

後來我發現,下面**,沒有為了temp而寫無參建構函式啊,這也是可以的,為什麼?

原來是:圖一無參建構函式沒寫,只寫了有參建構函式,系統也不給你無參建構函式了,所以temp居無定所。

2021.4.18:

或者寫個有預設引數值的建構函式,這時可以不寫出預設的建構函式了;

2021.8.8:

也可以使用"=default"來解決這個問題:

如果程式中已定義建構函式,預設情況下,編譯器就不再隱含生成預設建構函式。如果此時依然希望編譯器隱含生成預設建構函式,可以使用"=default"。

class person 

int m_a;

int m_b;

};

絕對值函式的導數不存在

絕對值函式的導數不存在 其實之前看文章的時候已經看過這個知識點了,最近在看神經網路的時候又涉及到這個知識點了,但是已經忘了,所以只好再回頭看看,其實這就是只看不用的後果,印象不深刻。其實要想證明乙個函式是否有導數可以使用導數的定義,看看它的左極限和右極限是否相等就行了。每回需要證明乙個極限是否存在時...

關於npm v提示命令不存在問題解決

一 建議解除安裝後重新安裝 1.解除安裝 yum remove nodejs npm y2.刪除相關檔案 usr local lib 下的node和node modules資料夾 rm rf usr local lib node usr local include下的node和node module...

關於npm v提示命令不存在問題解決

一 建議解除安裝後重新安裝 1.解除安裝 yum remove nodejs npm y 2.刪除相關檔案 usr local lib 下的node和node modules資料夾 rm rf usr local lib node usr local include下的node和node modul...