關於操作符過載的c 的程式除錯問題

2022-09-03 19:50:18 字數 701 閱讀 6453

1樓:六葉糖

建構函式的問題,沒有了無引數的建構函式了,因為你自己寫了個建構函式,所以那個無參的建構函式就沒有了,所以在定義物件的時候就無法呼叫無參的建構函式,就報錯了,

所以你要將你寫的建構函式加個預設值或者是在寫一個無參的建構函式,例如: math(int = r)

或者是增加函式 math()

2樓:上上西

把math c;

c=c1+c2;

改成一句:

math c = c1+c2;

因為你的math類定義了自己的建構函式,編譯器就不再為你產生一個預設的無參建構函式了,合併成一句math c = c1+c2;意思是c1 + c2返回一個math類的無名物件,放在等號右邊正好配合上建構函式的隱式轉換,其實是呼叫了編譯器產生的預設copy建構函式,當然還有另一種辦法,就是直接寫加上一個沒有引數的建構函式:math():real(0){}

3樓:匿名使用者

主程式第三行: math c;

你想要定義一個預設的物件,那麼在建構函式時,你就應該定義一個預設的建構函式。

因此,你把類定義第六行 改為 math(int r=0)這個程式就對了。

4樓:匿名使用者

過載了建構函式,那原本的預設無參建構函式就不存在了。

math c構造物件是錯的。

為什麼C中的過載操作符函式能定義成非成員函式

可以定義成友元函式,友元函式就不是成員函式了比如,類int中的過載 專 int operator int a 和友元函式是等價的 如果屬有幫助記得采納 謝謝 c 中,過載運算子的函式可以定義為類的成員函式,但是書上說在使用此過載運算子的時候,運算子左邊必 這個是單目的 字首寫法,前面加上運算子的話,...

C前置 和後置 操作符過載時,為啥通過啞元就能進行區分呢

比如 問題1 兩個函式重定義 不能通過編譯 complex operator void complex const operator 兩個函式形成過載關係,能通過 編譯 complex operator void complex const operator int 問題內2 前 和後 最根本容的區...

在c語言中,怎樣用操作符表示數的開方

好像沒有吧,一般都是用函式的。include sqrt float x 記得x是float 型哦。sqrt 是你要開方的數。不過include下要加include 2.6 運算子 c語言的內部運算子很豐富,運算子是告訴編譯程式執行特定算術或邏輯操作的符號。c語言有三大運算子 算術 關係與邏輯 位操作...