2012-07-21 46 views
1

是否有重載operator/()以使用該分類作爲分母的方法?「operator /」的分母

像這樣: int foo = 5/object;

+2

在[運算符重載](http://stackoverflow.com/questions/4421706/operator-overloading)上的這個優秀的SO貼子包含了關於實現二元算術運算符的好信息。 – Blastfurnace 2012-07-21 02:33:20

回答

4

使用免費的功能:

int operator/ (const int, const MyClass &); 

如果需要訪問你有沒有接口的私有成員,讓你的類中的朋友,也是:

friend int operator/ (const int, const MyClass &); 
+0

什麼是免費功能?我從來沒有聽說過它。 – Dasaru 2012-07-21 02:36:10

+0

@達斯魯,一個不包含在課堂中的人。在這種情況下,它是一個成員函數,它約束它將第一個參數作爲「MyClass *」,將其中一個打開。參數的順序對應於您調用它的方式,所以如果它在課程中,則不可能切換它們。 – chris 2012-07-21 02:36:27

+0

@達斯魯:你也會看到他們叫'非會員'功能。 – Blastfurnace 2012-07-21 02:37:13

3

使用免費的功能,而不是一個成員函數爲operator/

二元運算符通常具有相同的操作數類型。假設foo具有非顯式構造服用int,你會:

struct foo 
{ 
    foo(int i) {}; 
}; 

int operator/(foo const& x, foo const& y); 
0

免費功能,您的朋友:

int operator/ (int, const MyClass &); 
+5

朋友不是指「朋友」;-)。 – mavam 2012-07-21 02:31:54

+0

@MatthiasVallentin:不一定 - 但是'朋友'也可能在這裏使用。 – 2012-07-21 02:32:40

+0

@MatthiasVallentin哈哈,好的:) – iTayb 2012-07-21 02:33:56