se explica mejor con un ejemplo:la asignación de una temperatura a un miembro de ref const provoca un fallo de segmentación
tok.h
#include <string>
static const char* defaultDelim = ".,;";
class Tokenizer {
public:
Tokenizer():
// 'delim' is the const ref member that is initialized by the temp string
delim((altDelim.size())? altDelim : std::string(defaultDelim))
{}
size_t scan(const std::string& str)
{ return str.find_first_of(delim); }
static void setDelim(const std::string& d) { altDelim = d; }
private:
static std::string altDelim;
const std::string& delim;
};
main.cpp
#include <iostream>
using namespace std;
#include "tok.h"
std::string Tokenizer::altDelim;
int main()
{
Tokenizer tok;
size_t pos = tok.scan("hello, world");
cout << pos << endl;
}
la el programa imprime 0 que es incorrecto. El código real obtiene un fallo seg.
Espero que la regla de prolongar la vida útil de una temperatura asignada a una referencia constante se mantenga aquí, pero aparentemente no lo es. Sabe usted la razón'?
De vez en cuando, no veo por qué no hubo votos alternos para esto. Lento día hoy. :( –
concisa y completa. ¡Muchas gracias! – davka