[Conocimientos básicos de C ++] modificador const

modificador const

En lenguaje C, estamos acostumbrados a usar #define para definir constantes, por ejemplo

#define MAX 100

De hecho, este método solo reemplaza los caracteres durante el preprocesamiento y reemplaza todos los "MAX" por "100". Después de eso, el identificador MAX ya no está en el programa.

Este MAX no es una variable, no tiene tipo, no ocupa memoria y es propenso a errores.

C ++ proporciona una forma más flexible y segura de definir constantes, es decir, use const para modificar constantes, por ejemplo:

const int MAX=100;

El MAX aquí tiene un tipo, ocupa una unidad de almacenamiento, tiene una dirección y puede usar un puntero para señalarlo, pero su valor no se puede cambiar.

Mira el siguiente código:

#include<iostream>                      
using namespace std; 
int main()
{
    
    
	int a = 1;
    #define T1 a+a;
    #define T2 T1-T1;
	cout << "T2 is " << T2 ;
	return 0;
}

A primera vista, los resultados del programa parecen estar impresos

T2 es 0

Pero el resultado real de este programa es

T2 es 2

La razón es que la oración de la octava línea se interpreta como

cout<<"T2 is "<<a+a-a+a<<endl;

Si el programa usa const en lugar de #define, este error no ocurrirá. como sigue:

#include<iostream>                      
using namespace std; 
int main()
{
    
    
	int a = 1;
    int const T1=a+a;
    int const T2=T1-T1;
	cout << "T2 is " << T2 ;
	return 0;
}

Resultados del:
Inserte la descripción de la imagen aquí

Por lo tanto, C ++ recomienda usar const en lugar de #define para definir constantes

puntero modificado const

1. Un puntero a una constante, por ejemplo;

const char * name ="hyx";                //声明指向常量的指针

El puntero puede cambiar la dirección a la que apunta, pero no puede cambiar la constante a la que apunta.

name[3]='a';                           //错误,不允许改变指针所指的常量
name="xxxxxxx";                        //合法,可以改变指针所指的地址

2. El puntero constante se refiere a la definición de la dirección a la que apunta el puntero como una constante

Como su nombre lo indica, la dirección del puntero es constante y no se puede cambiar, pero los datos a los que apunta se pueden cambiar.

3. Puntero constante a constante

No se pueden modificar ni la dirección ni los datos de la dirección.

Descripción

1. Si usa const para definir una constante entera, la palabra clave int se puede omitir. Por ejemplo, las siguientes dos definiciones son equivalentes:

  const int MAX=100;
  const MAX=100;

2. Una vez que se crea una constante, no se puede cambiar en ninguna parte del programa.

3. A diferencia de las constantes definidas por #define, las constantes definidas por const pueden tener sus propios tipos de datos, de modo que C ++ realiza una comprobación de tipos más estricta en tiempo de compilación y tiene una buena detectabilidad en tiempo de compilación.

4. Los parámetros formales de una función también se pueden describir con const para garantizar que los parámetros formales no se modifiquen dentro de la función.

Supongo que te gusta

Origin blog.csdn.net/weixin_43962381/article/details/110704357
Recomendado
Clasificación