Need help with function prototype and parameters

Can you tell me why the function test(int,int=2,int=2)(line4) is match with test(third,second)(line13)?
There are 3 parameters in prototype but only have 2 when called.
The function only get the parameter 'third' and 'second' into the function but why the value of 'first' change?
I know how the compiler get the 14 and 23 but I don't know how it get 32.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
   # include <iostream>
using namespace std;

void test(int, int=2, int=2);
void test(int, int *, int &);
void test(int* , int[], int);
const int SIZE = 4;

int main()
{
	int first =2, second =3, third =4;
	int array[SIZE]={3,6};
	test(third, second);
	cout << first << ", " << second << ", " << third << "," << endl;
	test(&second, array, SIZE);
	for(int i = 0; i < SIZE; i++)
	{
		cout << array[i] << ", " ;
	}
	cout << endl;
	test(array[1], &array[2], array[3]);
	for(int i = 0; i < SIZE; i++)
	{
		cout << array[i] << ", " ;
	}
	cout << endl;

	system("pause");
	return 0;
}

void test(int first, int second, int third)
{
	first += 10;
	second+= 20;
	third+= 30;
	cout<< first << ", " << second << ", " << third << ", " << endl;
}

void test(int* p, int num[], int SIZE)
{
	*p = SIZE;
	for(int i=0; i<SIZE; i++)
	{
		*(num + i) += *p;
	}
}

void test(int first, int *second, int & third)
{
	first += 2;
	*second += 5;
	third += 3;
}
Last edited on
The test function has default arguments for the two last parameters. That means if you pass in fewer arguments it will use the default arguments instead.

On line 13 you leave out the third argument (not to be confused with the variable named third) so the default argument 2 will be passed automatically.

 
test(third, second); // same as test(third, second, 2); 
Last edited on
third u have given the default parameter it means if u want to deal with default value not necessarily to pass the parameter explicitly .
even u can call it with only one parameter since last two is having the deafult parameter
Topic archived. No new replies allowed.