2015-12-15 156 views
0

我需要重載運營商的一類複數 與2個私有成員:重載++運算符

double real; 
    double imag; 

這是構造

complex::complex(double a, double b) { 
    real = a; 
    imag = b; 
} 

這是定原型

complex complex :: operator++ (int x); 

但我不知道這將如何被覆蓋,因爲

int u = 1; 
int h = 3; 

u++3; 

不起作用

所以怎麼會變成這樣編譯

我只看過

variable++ 

--variable 

這將如何超載?

+0

'+ ='運算符也存在 – AndyG

+0

請注意,對於複數,「++」操作沒有明確定義的語義。因此,最好避免執行它。 –

回答

4

後增加運算符簽名operator++(int x)中的int x被稱爲虛擬參數。這實際上並不意味着什麼,除了將其與預增加運算符operator++()區分開來。

在函數的主體中,您編寫後增量的邏輯,但不要使用x。當您使用variable++時,它獲得值0

從技術上說,你可以寫variable.operator++(5);然後增量後運算符將被調用x5但是沒有真正的理由要這樣做。