temlplate<typename T>;
class Array
{
public:
Array(int lowBound, int hightBound);
Array(int size);
T& operator[](int index);
};
Array<int>; a(10);
Array<int>; b(10);
for (int i = 0; i < 10; ++i)
{
if (a == b[i]) // 哎呦! "a" 应该是 "a[i]"
{
do something for when
a[i] and b[i] are equal;
}
else
{
do something for when they're not;
}
}
我们的编译器注意到它能通过调用 Array;构造函数能转换 int 类型到 Array;类型,这个构造函数只有一个 int 类型的参数。然后编译器如此去编译,生成的代码就象这样:
class BST { ... };
class BalancedBST: public BST { ... };
void printBSTArray(ostream& s,const BST array[], int numElements)
{
for (int i = 0; i < numElements; )
{
s << array[i]; //假设 BST 类重载了操作符<<
}
}