2017-10-21 29 views
0

我想在類之外使用運算符重載。我在文檔中讀到,當我們在類的外部使用它時,我們可以給出兩個對象作爲參數。當我使用作用域解析運算符在類外部定義它時,它會給我一個錯誤。我想知道原因爲什麼範圍解析運算符在課堂外給出錯誤?

class Rectangle 
{ 
public: 
int L; 
int B; 

Rectangle() //default constructor 
{ 
    L = 2; 
    B = 2; 
} 

Rectangle(int l,int b)  //parametrized constructor 
{ 
    L = l; 
    B = b; 
} 
void Display() 
{ 
cout<< "length is " << L <<endl; 
cout<< "breadth is " << B <<endl; 
}        

}; 

Rectangle Rectangle:: operator+ (Rectangle obj1,Rectangle obj2)  
{ 
Rectangle obj3; 

obj3.L = obj1.L + obj2.L; 
obj3.B = obj1.B + obj2.B; 
return obj3; 

} 

int main() 
{ 
Rectangle R1; 
R1.Display(); 

Rectangle R2(5,3); 
R2.Display(); 

Rectangle R3 ; 
R3 = R1+ R2; 
R3.Display(); 

return 0; 
} 
+0

二進制運算符,你可以聲明爲一個成員函數有一個參數或作爲「免費功能」與兩個。 –

回答

1

你已經差不多了。這兩個參數的形式實際上是一個免費的功能,這將是ADL,不是會員發現:

Rectangle operator+ (Rectangle obj1,Rectangle obj2)  
{ 
Rectangle obj3; 

obj3.L = obj1.L + obj2.L; 
obj3.B = obj1.B + obj2.B; 
return obj3; 

} 
相關問題