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 útei

Vamos 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

boost :: scoped_ptr <T>

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

boost :: shared_ptr <T> (std :: tr1 :: shared_ptr <T>)

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çã

boost :: weak_ptr <T>

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

questionAnswers(22)

yourAnswerToTheQuestion