Perguntas com a marcação «shared-ptr»

Classe de ponteiro inteligente contado de referência que implementa propriedade compartilhada


8
Diferença no make_shared e shared_ptr normal em C ++
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Muitas postagens do google e do stackoverflow existem sobre isso, mas não consigo entender por que make_sharedé mais eficiente do que usar diretamente shared_ptr. Alguém pode me explicar passo a passo a sequência de objetos criados e operações realizadas por ambos, para que …
276 c++  c++11  shared-ptr 

10
Devemos passar um shared_ptr por referência ou por valor?
Quando uma função recebe um shared_ptr(de boost ou C ++ 11 STL), você a está passando: por referência const: void foo(const shared_ptr<T>& p) ou por valor void foo(shared_ptr<T> p):? Eu preferiria o primeiro método porque suspeito que seria mais rápido. Mas isso realmente vale a pena ou existem outros problemas? …
270 c++  c++11  boost  shared-ptr 


16
Como chamo :: std :: make_shared em uma classe com apenas construtores protegidos ou privados?
Eu tenho esse código que não funciona, mas acho que a intenção é clara: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); …
187 c++  c++11  shared-ptr 

2
shared_ptr para uma matriz: deve ser usada?
Apenas uma pequena consulta sobre shared_ptr. É uma boa prática usar shared_ptrapontar para uma matriz? Por exemplo, shared_ptr<int> sp(new int[10]); Se não, então por que não? Uma razão pela qual eu já estou ciente é que não é possível aumentar / diminuir o shared_ptr. Portanto, ele não pode ser usado …
172 c++  c++11  shared-ptr 


6
Por que eu std :: move um std :: shared_ptr?
Estive pesquisando o código-fonte do Clang e encontrei este trecho: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Por que eu iria querer std::moveum std::shared_ptr? Existe algum ponto em transferir a propriedade de um recurso compartilhado? Por que eu não faria isso? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = …

6
Por que o std :: shared_ptr <void> funciona
Encontrei algum código usando std :: shared_ptr para executar uma limpeza arbitrária no desligamento. No começo, achei que esse código não funcionaria, mas tentei o seguinte: #include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { std::cout &lt;&lt; "Test …
129 c++  c++11  shared-ptr 

4
Diferença entre `const shared_ptr <T>` e `shared_ptr <const T>`?
Estou escrevendo um método de acesso para um ponteiro compartilhado em C ++ que funciona mais ou menos assim: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } Portanto, para oferecer suporte à constância getBar()do tipo de retorno deve ser um boost::shared_ptrque evite a …
116 c++  boost  const  shared-ptr 


3
std :: shared_ptr thread safety explicada
Estou lendo http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html e alguns problemas de segurança de thread ainda não estão claros para mim: Padrão garante que a contagem de referência seja tratada com segurança de thread e seja independente de plataforma, certo? Problema semelhante - o padrão garante que apenas um encadeamento (segurando a última referência) irá …
106 c++  c++11  shared-ptr 

4
Onde está shared_ptr?
Estou muito frustrado agora, depois de várias horas tentando descobrir onde shared_ptr está localizado. Nenhum dos exemplos que vejo mostra código completo para incluir os cabeçalhos para shared_ptr(e funcionando). Simplesmente afirmando std, tr1e &lt;memory&gt;não está ajudando em nada! Eu baixei boosts e tudo, mas ainda não aparece! Alguém pode me …

2
std :: shared_ptr deste
Atualmente, estou tentando aprender como usar ponteiros inteligentes. No entanto, ao fazer alguns experimentos, descobri a seguinte situação para a qual não consegui encontrar uma solução satisfatória: Imagine que você tenha um objeto da classe A sendo pai de um objeto da classe B (o filho), mas ambos deveriam se …


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.