Ari.Huttunen@hut.fi (Ari Juhani Huttunen) (03/08/91)
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__ _