1
2
3
4
5
6
7
8
9
10
template <class T>
Cents Average(Cents *atArray, int nNumValues)
{
Cents tSum = 0;
for (int nCount=0; nCount < nNumValues; nCount++)
tSum += atArray[nCount];
tSum /= nNumValues;
return tSum;
在这种情况下,楚是一美分的对象,但我们没有定义+=操作符美分的对象! 我们需要定义该函数为average()能够与美分。 展望未来, 我们可以看到, average() 也使用 / = 运算符 , 所以我们将 继续定义 , 以及 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Cents
{
private:
int m_nCents;
public:
Cents(int nCents)
: m_nCents(nCents)
{
}
friend ostream& operator<< (ostream &out, const Cents &cCents)
{
out << cCents.m_nCents << " cents ";
return out;
}
void operator+=(Cents cCents)
{
m_nCents += cCents.m_nCents;
}
void operator/=(int nValue)
{
m_nCents /= nValue;
}
};
最后,我们的代码可以编译和运行!这里是结果:
11美分
请注意,我们没有修改average()都让它与型美分的对象。我们必须定义用于为仙班average()实施的运营商,而编译器照顾休息!