Topic: default/variable/implicit arguments
Author: Ari.Huttunen@hut.fi (Ari Juhani Huttunen)
Date: 8 Mar 91 11:03:12 GMT Raw View
Someone on this group or comp.lang.c++ (Sorry, but that article seems to be deleted
on this system) argued that the default arguments on c++ are not good because:
f(int a=0, int b=0, int c=0);
In this example it would be very unlikely that when programmer decides to omit
argument 'a' he has already decided to omit arguments 'b' and 'c' as well.
He also suggested the calling syntax f(b:=5, c:=4);. This would allow the omission
of argument 'a' only.
Now, consider this general function declaration syntax:
int func(int a, int b=0 ... int c=0);
1) Arguments like 'a' must be given explicitly when calling this function.
2) Arguments like 'b' can be given or omitted. They can also be given using syntax
b:=value, in any order.
3) ... denotes any number of arguments of any type.
4) Arguments like 'c' cannot be supplied to the function when calling it. BUT they
are _implicitly_ passed to the function when it is called. They are passed as the
last arguments, even after the variable arguments.
Example:
int min(int a ... int last=MAXINT);
Now these calls are legal:
min(1,5,6);
min(4,5,77,2,46);
As opposed to what would have to be written now:
min(1,5,6,MAXINT);
min(4,5,77,2,46,MAXINT);
Result: We have given a way to determine how many variable arguments were given
to this function. And the user of this function doesn't have to know that
a MAXINT must be given as the last argument.
Also no added runtime overhead is forced.
--
_ _____ _____ _____ _____ _____ _____ _____ _____ _____ ___
I___I I___I I___I I___I I___I I___I I___I I___I I___I I___I
Ari Huttunen ___I___ Oikotie on pisin matka ___I___I
_ __ ___I___I___I___I__ __ kahden pisteen v{lill{ _ ___I___I_
__I __I___I___I___I___I___I___________________________________________I___I__ _