En el siguiente programa cuerpo cosists de un vector de punteros. Puntos es una estructura de coordenadas x, y, z y un punto_id. Creo que a medida que el cuerpo pasa por referencia constante, el siguiente paso debería producir un error. BUt el programa se está ejecutando sin ningún problema. ¿Puedes explicarme por qué es esto?C++ pasando por const referencia
void readOutFile(const Body& body, int n){
....
body.bp[0]->points.push_back(Point_id(p,i));
}
'body' se pasa como' const' pero no hay forma de que el compilador sepa que 'body.bp [0] -> points' debe ser' const' también. – wroniasty
Se ejecutará correctamente y el error const será un error de tiempo de compilación, no un error de tiempo de ejecución. –
En C++, const es superficial, no profunda. Entonces afecta el objeto pero no sus asociaciones. Significa que solo puedes llamar a los métodos const. Pero los métodos const pueden cambiar otros objetos, siempre usan métodos en la interfaz, y usan una buena herramienta de pelusa para verificar la const profunda. –