in c++
class bar
{
int i;
char b;
float d;
};
void foo ( bar arg );
void foo ( bar &arg );
void foo ( bar *arg );
this is a sample class/struct and functions
i have some Qs
- what’s the difference between 1st and 2nd way of passing the argument in ‘asm’, size, speed ?
- how the arguments are passed to the functions foo in each case ( in case of pointer i know the pointer is pushed on the stack )
- when passing arguments, in terms of efficiency at ( speed, size, preferability ) which is better ?
- what’s the intel ‘asm’ syntax that corresponds each of the ways of passing arguments ?
i know what most say about “it doesn’t matter on modern compilers and CPUs” but what if we’re talking about Old CPUs or compilers?
thanks in advance
The pointer and the reference methods should be quite comparable (both in speed, memory usage and generated code).
Passing a class directly forces the compiler to duplicate memory and put a copy of the
barobject on the stack. What’s worse, in C++ there are all sort of nasty bits (the default copy constructor and whatnot) associated with this.In C I always use (possibly const) pointers. In C++ you should likely use references.