¿Cuáles son las diferencias entre byc?
c tiene un inicializador constante de tiempo de compilación, mientras que b no. Un objeto constante con inicializador constante de tiempo de compilación es en sí mismo un valor constante de tiempo de compilación.
Como puedo definir la longitud de un arry usando una constante, entonces, ¿por qué no funciona?
No cualquier constante será suficiente. const
el calificador implica constancia de tiempo de ejecución (es decir, el valor puede determinarse en tiempo de ejecución pero no cambiará durante la vida útil del objeto). Solo se pueden usar valores constantes de tiempo de compilación como tamaño de matriz.
El término "constante" es realmente ambiguo, y la palabra clave
const
es engañosa.const
significa: "no permitir que el valor de este objeto no se cambie después de la inicialización". No , no significa "constante de tiempo de compilación". Su valor inicial puede (y generalmente lo hace) aún provenir de fuentes de tiempo de ejecución.Necesita una constante de tiempo de compilación para una matriz enlazada.
A veces es posible tener un objeto llamado
foo
que es constante en tiempo de compilación, si lo es,const
y se inicializó a partir de una expresión constante, como un literal o unaconstexpr
cosa. Ese es el casoc
; No es el casob
.fuente