Estoy CASI seguro de que en todos los lenguajes orientaos a objetos es así. Sin embargo hay que recordar que incluso los lenguajes no orientados a objetos nos impiden hacer eso. ejemplo: En el lenguaje C para copiar el valor de una cadena de caracteres (que es un arreglo unidimensional) se disponen de funciones especiales para dicho propósito y no se puede hacer simplemente:
char A[22] = "Cadena";
char B[22];
B = A;
En lenguajes de alto nivel se puede hacer esto porque el compilador crea rutinas que copian cada caracter de una cadena a la otra, sin embargo yo no sé de algún lenguaje de programación que permita hacer esto con otro tipo de objetos sin recurrir a una función especial.
Menciona el lenguaje en el que estás trabajando y veremos si podemos encontrar algo al respecto.
NOTA: Creo que esto puede aclarar todo. ¿Te has preguntado por qué los objetos se pasan a una función por referencia y no por valor?