2011-07-24 78 views
2

我所遇到的一個函數的定義出發爲:請解釋下面的函數

int operator*(vector &y) 
{ 
    // body 
} 

*只是運營商後,打開參數的括號之前後,這是什麼意思的功能?

回答

7

這是一個operator *過載。您應該使用的語法是*(y),而y的類型是vector

它允許你引用類似於實現的東西,類似於C中的指針引用。當然實際的含義取決於正文。例如您可以返回對矢量中內部元素的引用。

0

其功能過載,超負荷的去參考運算符*

-2

其實它不是一個在* ptr!它實際上是一個運算符,如乘法運算符。這裏是一個簡單的例子

#include <iostream> 
using namespace std; 

struct Int{ 
int val; 
Int(const int val = 0) : val(val){} 
int operator*(const Int& number)const{ 
    return val * number.val; 
} 
}; 

int main(){ 
    Int n(4), m(5); 
    cout << n * m << endl; //use the operator*() implicitly 
    cout << (n.operator*(m)) << endl; //use the operator* explicitly 
} 

要定義一個消極的運算符,其原型將是運算符*()。請查看here瞭解更多信息。 Here是一個測試的實時代碼。

+0

大多數重載操作符可以被定義爲非成員函數,並且一元*也不例外。 http://ideone.com/sPixf如果它是一個成員函數,是的,它是二進制*,但顯示爲一元*更可能。 –

+0

哦,等等,你是對的,沒有意識到這是一個常規功能。 – dchhetri

0

它是一個解引用運算符或乘法運算符覆蓋。如果它在名稱空間中,則取消引用,如果它在類中,則取消引用。既然它有一個主體,並且沒有類範圍,我還會假設它是一個取消引用。