对于其中一项任务,我需要创建一个重载函数print来打印数组的一个元素或所有元素。打印整个数组我没有问题:
for( int i = 0; i < size; i++)
cout << list [ i ] <<endl;
但是我如何使相同的功能只打印一个特定的元素呢?我看到的方式是询问用户要打印什么,一个元素或所有数字。或者我在这里错过了什么?
打印整个阵列
print (const int *arr) const
{
// code you have written
}
打印特定的数组元素
print (const int *arr, const int index)const // overloaded function
{
// validate index and print arr[index]
if (index >=0 && index<size)
cout << *(arr+index)
}
(由于您在谈论重载,我假设您使用的是 C++。)
重载另一个函数的函数不再是同一个函数。在您的情况下,您需要一个打印一个元素的函数。换句话说,只有一个int
:
void print(int num)
{ cout << num << endl; }
然后,您提供一个重载,该重载采用一个范围并打印它:
(请注意,在一个范围内,end
元素是指“超出范围末尾的一个”,不应打印。)
void print(int* begin, int* end)
{
while (begin != end) {
cout << *begin << endl;
// Or if you want to follow correct decomposition design:
// print(*begin);
++begin;
}
}
两个函数的用法:
int array[3] = {1, 2, 3};
print(array[0]);
print(array, array + 3);