я столкнулся следующий код (примерно):Lifetime временных объектов
struct StringBuffer {
StringBuffer(const char* string) {strcpy(m_buffer, string);}
const char* c_str() const {return m_buffer;}
char m_buffer[128];
};
std::string foobar() {
const char* buffer = StringBuffer("Hello World").c_str();
return std::string(buffer);
}
Я правильно предполагая, что после строки:
const char* buffer = StringBuffer("Hello World").c_str();
buffer
указывает на указатель в деконструкции StringBuffer
объект?
Возможно, стоит упомянуть, что ссылка на константу может продлить срок службы временного. – Hurkyl
@Hurkyl Перечислено как исключение на ссылочной странице, с которой я связан. –
Да, я знал, что ссылка на const распространяется на всю жизнь, хорошая статья об этом здесь: http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/также –