ator * (Set & ,Set & ) 重载运算符号*,用于计算集合的交集
用对象的引用作为传值参数 ... } 先考虑集合交集的实现 Set operator *( Set Set1,Set
Set2) { Set res; for(int i=0;i<Set1.card;++i) for(int
j=0;j>Set2.card;++j) if(Set1.elems[i]==Set2.elems[j]) { res.elems[res.card++]=Set1.elems[i]; break; } return
res; } 由于重载运算符不能对指针单独操作,我们必须把运算数声明为 Set 类型而不是 Set *
。 每次使用*做交集运算时,整个集合都被复制,这样效率很低。我们可以用引用来避免这种情况。 Set operator *( Set
&Set1,Set &Set2) { Set res; for(int
i=0;i<Set1.card;++i) for(int
j=0;j>Set2.card;++j) if(Set1.elems[i]==Set2.elems[j]) { res.elems[res.card++]=Set1.elems[i]; break; } return
res; }
三、引用返回值
如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用: double
&max(double &d1,double &d2) { return
d1>d2 d1:d2; } 由于max()函数返回一个对双精度数的引用,那么我们就可以用max()
来对其中较大的双精度数加1: max(x,y)+=1.0; |