#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i1 = 0;
int i2 = 10;
const int *p = &i1;
int const *p2 = &i1;
const int const *p3 = &i1;
p = &i2;
p2 = &i2;
p3 = &i2;
cout << *p << endl
<< *p2 <<endl
<< *p3 <<endl;
return 0;
}
El código se puede compilar tanto con VC6.0 como con VC2010. Pero tengo preguntas como golpe:sobre "int const * p" y "const int * p"
const int * p = &i1;
Significa lo que los puntos "p" no se pueden modificar, pero p no puede ser modificado, estoy en lo cierto? por lo
p = &i2;
esta línea será posible respetar, sí?
Esta línea:
int const *p2 = &i1;
En mi opinión, esto significa p2 no puede ser modificado mientras lo P2 puntos se pueden cambiar, estoy en lo cierto? Por qué los
p2 = &i2;
puede ser compilado?
Sobre esta línea:
const const int * p3 = &i1;
p3 = &i2;
Oh, dios ... que estoy loco. No tengo idea de por qué esta línea se puede compilar sin error ... ¿Puede ayudarme un cuerpo?
Otro código que me confundió está aquí:
class Coo2
{
public:
Coo2() : p(new int(0)) {}
~Coo2() {delete p;}
int const * getP() const
{
*p = 1;
return this->p;
}
private:
int* p;
};
por qué este código puede ser compilado? En
const int * getP() const
Tengo cambiar el valor o * p!
'const' se aplica a la cosa de la izquierda, a menos que no haya nada a la izquierda, en cuyo caso se aplica a la cosa de la derecha. (Sí, esto es innecesariamente confuso y tonto.) – GManNickG
'const' al final significa que no se realizarán cambios en el objeto/clase. –