Pergunta

Em C ++, é seguro estender o escopo por meio de uma referência?

No código, o que quero dizer é:

MyCLass& function badIdea()
{
    MyClass obj1;
    ...
    return obj1;
}
Foi útil?

Solução

Não é seguro estender o escopo por meio de referência. Os objetos em C ++ não são contados de referência quando o Obj1 sair do escopo, será excluído, referindo -se ao resultado de Badidea () só o colocará em problemas

Outras dicas

O único lugar em que é bom estender um escopo com uma referência é com um const referência em namespace ou escopo da função (não com membros da classe).

const int & cir = 1+1; // OK to use cir = 2 after this line 

Este truque é usado em Andrei Alexandrescu's muito legal Guarda de escopo Para capturar um const Referência a uma classe base do guarda -escopagem do concreto.

Por favor, esclareça o que você quer dizer.

Supondo que você pretenda fazer isso:

int * p = NULL;
{
  int y = 22;
  p = &y;
}
*p = 77; // BOOM!

Então não, absolutamente não, o escopo não é estendido com uma referência.

Você pode querer olhar para os indicadores inteligentes, por exemplo, das bibliotecas do Boost: Cliquety

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top