En programación, la correctitud de constantes (en inglés: const correctness)? es el tipo de correctitud que hace referencia a la adecuada declaración de variables u objetos como inmutables. El término es mayormente usado en el contexto de C o C++, y recibe su nombre de la palabra reservada const de estos lenguajes.

Property Value
dbo:abstract
  • En programación, la correctitud de constantes (en inglés: const correctness)? es el tipo de correctitud que hace referencia a la adecuada declaración de variables u objetos como inmutables. El término es mayormente usado en el contexto de C o C++, y recibe su nombre de la palabra reservada const de estos lenguajes. El uso de la palabra reservada const indica lo que el programador «debe» hacer, no necesariamente lo que el programador «puede» hacer, pues calificar datos con esta palabra reservada no provoca que se almacenen en un tipo de memoria de sólo lectura, sino que ordena al compilador realizar verificaciones sobre el código en tiempo de compilación para finalizar con un error el proceso de compilación en el caso de intentar modificar un dato constante. El hecho de que sea posible modificar datos calificados con const en tiempo de ejecución prueba que estos no se almacenan en memoria de sólo lectura. Para realizar estos cambios en tiempo de ejecución, deben evitarse las verificaciones que el compilador realiza sobre los valores const mediante el uso de conversiones de tipo o uniones. const int constante = 0; // Valor constante// Referencia no constante a un valor constante, sin usar la conversión const_cast sería un errorint &noConstante = const_cast<int &>(constante);// Mediante la referencia no constante se modifica el valor constante:noConstante = 1;// Puntero a no constante apuntando a un valor constante, sin usar la conversión const_cast sería un errorint *punteroANoConstante = const_cast<int *>(&constante);// Mediante el puntero a no constante se modifica el valor constante:*punteroA_No_Constante = 2;// Puntero a no constante apuntando a un valor constante, sin usar la conversión estilo C sería un errorpunteroANoConstante = (int *)&constante;// Mediante el puntero a no constante se modifica el valor constante:*punteroA_No_Constante = 3;// Unión que contiene puntero a constante y puntero a NO constanteunión constanteYMutable{ const int *punteroAConstante; int *punteroA_No_Constante;} u;// Correcto: Puntero a constante apuntando a un valor constanteu.punteroAConstante = &constante;// Mediante el otro miembro de la unión se modifica el valor constante:*u.punteroA_No_Constante = 4; Cabe destacar que el compilador puede decidir realizar optimizaciones sobre los valores calificados con const —como, por ejemplo, utilizar el valor literal en lugar del valor almacenado en la variable—. Esta optimización es conocida como y también se aplica sobre los literales de texto const char *; dado que no es posible modificar el valor de un literal, el ejemplo anterior daría lugar a un comportamiento indefinido. Los métodos no estáticos pueden declararse como const. Al hacerlo el dentro del método es de tipo valor_de_retorno const * const en lugar de valor_de_retorno * const. Esto significa que, dentro del método constante, el compilador tratará como error cualquier llamada a otros métodos no constantes o la modificación de cualquier campo del objeto. En C++, un campo puede ser declarado como , indicando que la anterior restricción no se aplica sobre él. En algunos casos, esto puede ser útil, por ejemplo, para cachear de datos, contar referencias o . En estos casos, no se altera el estado lógico del objeto, pero no es físicamente constante porque su representación binaria puede cambiar. (es)
  • En programación, la correctitud de constantes (en inglés: const correctness)? es el tipo de correctitud que hace referencia a la adecuada declaración de variables u objetos como inmutables. El término es mayormente usado en el contexto de C o C++, y recibe su nombre de la palabra reservada const de estos lenguajes. El uso de la palabra reservada const indica lo que el programador «debe» hacer, no necesariamente lo que el programador «puede» hacer, pues calificar datos con esta palabra reservada no provoca que se almacenen en un tipo de memoria de sólo lectura, sino que ordena al compilador realizar verificaciones sobre el código en tiempo de compilación para finalizar con un error el proceso de compilación en el caso de intentar modificar un dato constante. El hecho de que sea posible modificar datos calificados con const en tiempo de ejecución prueba que estos no se almacenan en memoria de sólo lectura. Para realizar estos cambios en tiempo de ejecución, deben evitarse las verificaciones que el compilador realiza sobre los valores const mediante el uso de conversiones de tipo o uniones. const int constante = 0; // Valor constante// Referencia no constante a un valor constante, sin usar la conversión const_cast sería un errorint &noConstante = const_cast<int &>(constante);// Mediante la referencia no constante se modifica el valor constante:noConstante = 1;// Puntero a no constante apuntando a un valor constante, sin usar la conversión const_cast sería un errorint *punteroANoConstante = const_cast<int *>(&constante);// Mediante el puntero a no constante se modifica el valor constante:*punteroA_No_Constante = 2;// Puntero a no constante apuntando a un valor constante, sin usar la conversión estilo C sería un errorpunteroANoConstante = (int *)&constante;// Mediante el puntero a no constante se modifica el valor constante:*punteroA_No_Constante = 3;// Unión que contiene puntero a constante y puntero a NO constanteunión constanteYMutable{ const int *punteroAConstante; int *punteroA_No_Constante;} u;// Correcto: Puntero a constante apuntando a un valor constanteu.punteroAConstante = &constante;// Mediante el otro miembro de la unión se modifica el valor constante:*u.punteroA_No_Constante = 4; Cabe destacar que el compilador puede decidir realizar optimizaciones sobre los valores calificados con const —como, por ejemplo, utilizar el valor literal en lugar del valor almacenado en la variable—. Esta optimización es conocida como y también se aplica sobre los literales de texto const char *; dado que no es posible modificar el valor de un literal, el ejemplo anterior daría lugar a un comportamiento indefinido. Los métodos no estáticos pueden declararse como const. Al hacerlo el dentro del método es de tipo valor_de_retorno const * const en lugar de valor_de_retorno * const. Esto significa que, dentro del método constante, el compilador tratará como error cualquier llamada a otros métodos no constantes o la modificación de cualquier campo del objeto. En C++, un campo puede ser declarado como , indicando que la anterior restricción no se aplica sobre él. En algunos casos, esto puede ser útil, por ejemplo, para cachear de datos, contar referencias o . En estos casos, no se altera el estado lógico del objeto, pero no es físicamente constante porque su representación binaria puede cambiar. (es)
dbo:wikiPageID
  • 5963319 (xsd:integer)
dbo:wikiPageLength
  • 28069 (xsd:integer)
dbo:wikiPageRevisionID
  • 127212937 (xsd:integer)
dct:subject
rdfs:comment
  • En programación, la correctitud de constantes (en inglés: const correctness)? es el tipo de correctitud que hace referencia a la adecuada declaración de variables u objetos como inmutables. El término es mayormente usado en el contexto de C o C++, y recibe su nombre de la palabra reservada const de estos lenguajes. (es)
  • En programación, la correctitud de constantes (en inglés: const correctness)? es el tipo de correctitud que hace referencia a la adecuada declaración de variables u objetos como inmutables. El término es mayormente usado en el contexto de C o C++, y recibe su nombre de la palabra reservada const de estos lenguajes. (es)
rdfs:label
  • Correctitud de constantes (es)
  • Correctitud de constantes (es)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is owl:sameAs of
is foaf:primaryTopic of