Articles of referência

Java: diferença entre referência forte / suave / fraca / fantasma

Eu li este artigo sobre o tópico, mas eu realmente não entendo isso. Por favor, me dê alguns conselhos junto com exemplos ao descrever os conceitos.

C tem referências?

C tem referências? ou seja, como em C ++: void foo(int &i)

Existem dicas usando varargs com parâmetros de referência

Eu tenho esse pedaço de código (resumido) … AnsiString working(AnsiString format,…) { va_list argptr; AnsiString buff; va_start(argptr, format); buff.vprintf(format.c_str(), argptr); va_end(argptr); return buff; } E, com base em que a referência de passagem é preferida sempre que possível, alterei-a assim. AnsiString broken(const AnsiString &format,…) { … the rest, totally identical … } Meu código de […]

o que é o tipo de retorno do operador de atribuição?

Eu estou apenas começando C ++. Estou um pouco confuso sobre o tipo de retorno de atribuição e operador de remoção de referência. Estou seguindo o livro C ++ Primer. Em várias ocasiões, o autor diz que o tipo de retorno do operador de atribuição é referência ao tipo de operando à esquerda, mas, mais […]

Auto C ++ 11: e se obtiver uma referência constante?

Por favor, dê uma olhada no seguinte código simples: class Foo { public: Foo(){} ~Foo(){} Foo(const Foo&){} Foo& operator=(const Foo&) { return *this; } }; static Foo g_temp; const Foo& GetFoo() { return g_temp; } Eu tentei usar auto assim: auto my_foo = GetFoo(); Eu esperava que my_foo fosse uma referência constante ao Foo , […]

É seguro push_back um elemento do mesmo vetor?

vector v; v.push_back(1); v.push_back(v[0]); Se o segundo push_back causar uma realocação, a referência ao primeiro inteiro no vetor não será mais válida. Então isso não é seguro? vector v; v.push_back(1); v.reserve(v.size() + 1); v.push_back(v[0]); Isso torna seguro?

Você já usou o PhantomReference em algum projeto?

A única coisa que sei sobre o PhantomReference é: Se você usar seu método get() , ele sempre retornará null e não o object. Qual é a utilidade disso? Ao usar o PhantomReference , você garante que o object não possa ser ressuscitado do método finalize . Mas qual é o uso desse conceito / […]

Como evitar escrever funções de access duplicadas para referências mutáveis ​​e imutáveis ​​em Rust?

Algumas vezes, encontrei o cenário em que um método de access é necessário para referências mutáveis ​​e imutáveis. Para ~ 3 linhas, não é um problema duplicar a lógica, mas quando a lógica fica mais complexa, não é bom copiar e colar grandes blocos de código. Gostaria de poder reutilizar o código para ambos. O […]

referências constantes com typedef e templates em c ++

Ouvi dizer que os objects temporários só podem ser atribuídos a referências constantes. Mas esse código dá erro #include template t const& check(){ return t(); //return a temporary object } int main(int argc, char** argv){ const int &resCheck = check(); /* fine */ typedef int& ref; const ref error = check(); / *error */ return […]

Tempo de vida de referência constante do C ++ (adaptador do contêiner)

Eu tenho código que se parece com isso: class T {}; class container { const T &first, T &second; container(const T&first, const T & second); }; class adapter : T {}; container(adapter(), adapter()); Eu pensei que a vida de referência constante seria vida de contêiner. No entanto, caso contrário, o object adaptador é destruído depois […]