Здравствуйте Brother, Вы писали:
B>Внимание, вопрос!
B>Какой хороший (простой и очевидный) пример показал бы глубину грехопадения тех, кто склонен считать, что std::string::operator const char*() — это хорошо
П.Халперн."Стандартная библиотека С++ на примерах":
Весь вопрос в том, кто потом будет освобождать память.
вариант 1. Мы сами, ручками. Смотрим что из этого получится:
extern void f(const char*);
std:string s("hello world");
f(s); // f() принимает временный, неименованый указатель - > мы не сможем освободить память по этому адресу
вариант 2. Память будет очищать сам string
extern void f(const char*);
extern std:string g();
const char* p = g(); // !! std:string возвращаемый g()
// сохраняется во временной переменной string
f(p); // большой облом ! после выхода за строку 3
// временная переменная string уничтожается
// и очищает память, на которую указывает p.
// Что же мы передали в f()?