Const y static son conceptos ortogonales tanto en C como en C ++.
La constpalabra clave le dice al compilador que no permita que la variable aparezca como el lvalue de cualquier expresión, esencialmente haciéndola de solo lectura.
En C, la staticpalabra clave tiene varios usos dependiendo de a qué se aplique. Cuando se aplica a una variable de una función, indica que la variable no está almacenada en el ámbito local de una función, pero es accesible a través de sus invocaciones. Cuando se aplica a una función o variable global, se vuelve accesible solo para un archivo en particular; en otras palabras, es accesible solo dentro de la unidad de compilación (a menos que se declare extern).
En C ++, la staticpalabra clave se puede usar dentro de una definición de clase, para hacer que una variable o funciones se compartan en todas las instancias de la clase, en lugar de ser local para cada instancia. Además, una función de clase estática en C ++ solo puede acceder a variables estáticas de esa clase (o clases a las que tiene acceso). Ahora, en C ++ constproporciona a los miembros un enlace interno a la unidad de compilación a menos que se declaren explícitamente extern; esto puede ser a lo que se refiere. Esto permite que las constantes de tiempo de compilación se compartan entre unidades mediante el uso de archivos de encabezado. Tenga en cuenta, sin embargo, que los miembros no son realmente estáticos, sino que la constante se compila en cada ubicación donde se hace referencia.