onteiros @ Smart: Ou quem é o dono do seu bebê? [fechadas
C ++ é tudo sobre propriedade de memória
Aka "emântica de propriedade"
É responsabilidade do proprietário de um pedaço de memória alocada dinamicamente liberar essa memória. Portanto, a questão realmente é quem é o dono da memóri
Em propriedade de C ++ é documentada pelo tipo em que um ponteiro RAW está envolvido, portanto, em um bom programa C ++ (IMO), é muito raro [RARO NUNCA] ver ponteiros RAW passados (como ponteiros RAW não possuem propriedade inferida, portanto, podemos para não dizer quem é o proprietário da memória e, portanto, sem uma leitura cuidadosa da documentação, você não pode dizer quem é o responsável pela propriedade
Conversamente, é raro ver ponteiros RAW armazenados em uma classe, cada ponteiro RAW é armazenado em seu próprio invólucro de ponteiro SMART. N.B.: Se você não possui um objeto, não deve armazená-lo, pois não pode saber quando ele ficará fora do escopo e será destruído.)
Então a pergunta:
Que tipo de propriedade semântica as pessoas se deparam?Quais classes padrão são usadas para implementar essas semânticaQuais situações você acha que são úteiVamos manter um tipo de propriedade semântica por resposta, para que possam ser votados para cima e para baixo individualmente
Summary:s ponteiros @Conceptually inteligentes são simples e as implementações ingênuas são fáceis. Eu já vi muitas tentativas de implementação, mas invariavelmente elas são quebradas de alguma maneira que não é óbvia para uso casual e exemplos. Portanto, recomendo sempre o uso de "ponteiros inteligentes" bem testados de uma biblioteca, em vez de criar os seus próprios. std :: auto_ptr ou um dos indicadores inteligentes de impulso parecem cobrir todas as minhas necessidade
std :: auto_ptr <T>:ma pessoa é dona do objet
Mas a transferência de propriedade é permitid
Uso
======
Isso permite definir interfaces que mostram a transferência explícita de propriedad
ma pessoa é dona do objet
transferência de propriedade NÃO é permitid
Uso
======
Usado para mostrar propriedade explícit
objeto será destruído pelo destruidor ou quando redefinido explicitament
ropriedade múltipl
Este é um ponteiro simples de referência contada. Quando a contagem de referência chega a zero, o objeto é destruíd
Uso
======
uando o objeto pode ter várias flores com uma vida útil que não pode ser determinada em tempo de compilaçã
Usado com shared_ptr <T>.
m situações em que um ciclo de indicadores pode acontece
Uso
======
Utilizado para impedir que os ciclos retenham objetos quando apenas o ciclo está mantendo uma recontagem compartilhad