1

对于其中一项任务,我需要创建一个重载函数print来打印数组的一个元素或所有元素。打印整个数组我没有问题:

for( int i = 0; i < size; i++)
    cout << list [ i ] <<endl;

但是我如何使相同的功能只打印一个特定的元素呢?我看到的方式是询问用户要打印什么,一个元素或所有数字。或者我在这里错过了什么?

4

2 回答 2

1

打印整个阵列

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)

}
于 2012-12-01T17:05:07.347 回答
0

(由于您在谈论重载,我假设您使用的是 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);
于 2012-12-01T17:10:54.263 回答