assigning string :: c_str () a un const char * cuando la cadena sale del alcance

Tengo dudas sobre el uso básico de C ++. El siguiente código, compilado con gcc / LInux, se imprime correctamente.

La cuerdatest sale de alcance, así que también suc_str()l valor @ debería ser inválido, ¿no? ¿Me equivoco o he entendido mal laconst char*¿sentido

   #include <iostream>
   int main(){
     const char* a = "aaaa";
       std::cout << a;
       { std::string test("bbbb");a=test.c_str();}
       std::cout << a;
       a = "cccc";
       std::cout << a;
   }


   aaaabbbbcccc
   // print out without any problem

Respuestas a la pregunta(5)

Su respuesta a la pregunta