присвоение string :: c_str () const char *, когда строка выходит за рамки

Я сомневаюсь в базовом использовании C ++. Приведенный ниже код, скомпилированный с помощью gcc / LInux, распечатывается правильно.

Строка test выходит за пределы области видимости, поэтому ее значение c_str () должно быть недопустимым, не так ли? Я ошибаюсь или неправильно понял значение const char * ?

   #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
6
задан Abruzzo Forte e Gentile 14 November 2011 в 10:35
поделиться