en C++C++ pasar argumentos por referencia y el puntero
class bar
{
int i;
char b;
float d;
};
void foo (bar arg);
void foo (bar &arg);
void foo (bar *arg);
esto es una muestra de la clase/estructura y funciones
tengo alguna Qs
- cuál es la diferencia entre la primera y la segunda forma de pasar el argumento en 'asm', tamaño, velocidad?
- cómo se transmiten los argumentos de las funciones de foo en cada caso (en el caso de puntero i sé el puntero se empuja en la pila)
- argumentos cuando pasan, en términos de eficiencia al (velocidad, tamaño, preferibilidad) que es mejor ?
- ¿Cuál es la sintaxis intel 'asm' que corresponde a cada una de las formas de pasar los argumentos?
sé lo que dice la mayoría de "no importa en los compiladores modernos y las CPU", pero ¿y si estamos hablando de CPUs o compiladores antiguos?
gracias de antemano
CPU no importa. Pasar por valor implica más trabajo para todos, pero tipos más pequeños que el tamaño de un puntero. Vea la respuesta de cnicutar. –
importa tanto en la CPU moderna como en la antigua CPU.Tenga en cuenta que el x86 es una CPU antigua, incluso con sus mejoras modernas, tiene una buena cantidad de equipaje de la vieja escuela que tiene que llevar, especialmente relacionado con este tema. cnicutar tiene una respuesta tan buena que no vale la pena repetirla o reformularla. –