Cómo utilizar la palabra clave const en c ++

Video: Tutorial C++ Funciones miembro static

UN puntero es una variable que “puntos en” otras variables en C ++. la palabra clave const significa que una variable no se puede cambiar una vez que ha sido declarado e inicializado.

const doble PI = 3.1415926535-

Los argumentos de las funciones también se pueden declarar const, lo que significa que el argumento no puede ser cambiado dentro de la función. Sin embargo, esto introduce una dicotomía interesante en el caso de las variables de puntero. Considere la siguiente declaración:

Video: What is difference between const char * and char * const in C

const int * pInt-

Exactamente lo que es la constante de aquí? ¿Qué se puede no cambiar? Es la variable medio litro o el número entero apuntado por ¿medio litro? Resulta que ambos son posibles, pero esta declaración declara un puntero variable a una posición de memoria constante. Por lo tanto el siguiente:

Video: Tutorial 2 -Identificadores -palabras reservadas -constantes en c++

const int * pInt- // declara un puntero a una constante intint nVar-Pint = &nVar- // esto es permitido * Pint = 10 - // pero esto no es

Se puede cambiar el valor de medio litro, por ejemplo, asignándole la dirección de nVar. Pero el trabajo final en el fragmento de ejemplo genera un error de compilación, ya que no se puede cambiar el const int señalado en por medio litro.

Video: Tutorial de C++ 22 :ObjetosConst, funciones miembro const, lista inicializadora de miembros

¿Y si tuviera la intención de crear una variable de puntero con un valor constante? El siguiente fragmento de código muestra esto en acción:

int nVar-int * const cpInt = &nVar- // declarar un puntero constante // a una variable entera * cpInt = 10 // ahora esto es legal ... cpInt ++ - // ... pero esto no es

La variable cpInt es un puntero constante a una variable int. El programador no puede cambiar el valor del puntero, pero se puede cambiar el valor del entero en la mira.

los const-Ness se puede añadir a través de una asignación o inicialización pero no puede ser (fácilmente) desechado. Por lo tanto, la siguiente:

int nVar = 10-int PVAR = &int nVar-const * pcVar = pVar- // esto es legalint * PVAR2 = pcVar - // esto no es

La asignación pcVar = PVAR- está bien - esto es la adición de la const restricción. La asignación final en el fragmento no está permitido ya que intenta eliminar el const-ness restricción de pcVar.

Una variable puede ser reformulada implícitamente como parte de una llamada de función, como en el siguiente ejemplo:

fn void (int const& nVar) -void mainFn () {int n-FN (10) - // llama fn (int const&) Fn (n) - // llama a la misma función mediante el tratamiento n} // como si fuera const

La declaracion fn (int const&) dice que la función fn () no modifica el valor de su argumento. Esto es importante cuando se pasa una referencia a la constante 10. No es importante cuando se pasa una referencia a la variable norte, pero no duele nada.

Finalmente, const se puede utilizar como un discriminador entre las funciones del mismo nombre:

fn void (int const& nVar) fn -void (int& nVar) -void mainFn () {int n-fn (10) - // llama a la primera functionfn (n) - // llama a la segunda función}
Artículos Relacionados