2012-06-11 93 views

回答

3

它的工作原理完全一样的所有运营商的符号,可限定 一元或二元运算符(+-&是其他的),它 取决于参数的函数将采取数。因此,一个 一元*应该定义为采用单个运算符,或者作为不带参数的 非静态类成员(除this之外),或者作为采用单个自变量的自由函数 。二进制操作者应定义为两个参数 ,无论是作为一个非静态类成员 带一个参数(除了this),或游离函数服用 两个参数。

请注意,功能的名称被认为是相同的,所以二进制版本可以隐藏一个一元版本,反之亦然。

10

他们是独立的经营者,哪一个你重载取决于哪些参数传递给操作者。

struct A 
{ 
    //dereference operator 
    A /*or whatever*/ operator *() { /*...*/ }; 
    //multiply operator   
    A operator *(const A&) { /*...*/ }; 
}; 

//... 
A a; 
*a; //calls dereference operator 
a * a; //calls multiply operator